mirror of
https://github.com/InternLM/InternBootcamp.git
synced 2026-04-24 17:05:00 +00:00
init-commit
This commit is contained in:
commit
18a552597a
3461 changed files with 1150579 additions and 0 deletions
98
internbootcamp/libs/cipher/KorSHACipherEnvironment.py
Executable file
98
internbootcamp/libs/cipher/KorSHACipherEnvironment.py
Executable file
|
|
@ -0,0 +1,98 @@
|
|||
from .BaseCipherEnvironment import BaseCipherEnvironment
|
||||
|
||||
import hashlib
|
||||
|
||||
def generate_key():
|
||||
secret = "SECRET_KEY"
|
||||
sha256 = hashlib.sha256()
|
||||
sha256.update(secret.encode('utf-8'))
|
||||
return sha256.digest()
|
||||
|
||||
|
||||
class KorSHACipherEnvironment(BaseCipherEnvironment):
|
||||
def __init__(self, *args, **kwargs):
|
||||
problem_description = "SHA Cipher from kor-bench"
|
||||
super().__init__(problem_description, *args, **kwargs)
|
||||
|
||||
@property
|
||||
def cipher_name(self) -> str:
|
||||
return "Kor_rule25_SHACipher"
|
||||
|
||||
def encode(self, text, **kwargs):
|
||||
print("开始加密过程...")
|
||||
print(f"原始输入文本: {text}")
|
||||
|
||||
# 处理输入文本,只保留字母并转换为大写
|
||||
text = ''.join([char.upper() for char in text if char.isalpha()])
|
||||
print(f"处理后的输入文本: {text}")
|
||||
|
||||
# 生成密钥
|
||||
key = generate_key()
|
||||
print(f"生成的SHA-256密钥: {key.hex()}")
|
||||
|
||||
# 将文本转换为字节序列
|
||||
plaintext_bytes = text.encode('utf-8')
|
||||
print(f"文本转换为字节序列: {plaintext_bytes}")
|
||||
|
||||
# 使用XOR运算加密
|
||||
print("开始XOR加密...")
|
||||
ciphertext_bytes = bytes([b ^ key[i % len(key)] for i, b in enumerate(plaintext_bytes)])
|
||||
print(f"加密后的字节序列: {ciphertext_bytes}")
|
||||
|
||||
# 转换为十六进制字符串
|
||||
result = ciphertext_bytes.hex()
|
||||
print(f"最终加密结果(十六进制): {result}")
|
||||
|
||||
return result
|
||||
|
||||
def decode(self,text, **kwargs):
|
||||
print("开始解密过程...")
|
||||
print(f"加密的十六进制文本: {text}")
|
||||
|
||||
# 生成密钥
|
||||
key = generate_key()
|
||||
print(f"生成的SHA-256密钥: {key.hex()}")
|
||||
|
||||
# 将十六进制转换为字节序列
|
||||
ciphertext_bytes = bytes.fromhex(text)
|
||||
print(f"十六进制转换为字节序列: {ciphertext_bytes}")
|
||||
|
||||
# 使用XOR运算解密
|
||||
print("开始XOR解密...")
|
||||
plaintext_bytes = bytes([b ^ key[i % len(key)] for i, b in enumerate(ciphertext_bytes)])
|
||||
print(f"解密后的字节序列: {plaintext_bytes}")
|
||||
|
||||
# 转换为文本
|
||||
result = plaintext_bytes.decode('utf-8')
|
||||
print(f"最终解密结果: {result}")
|
||||
|
||||
return result
|
||||
|
||||
def get_encode_rule(self,):
|
||||
return """加密规则:
|
||||
- 输入:
|
||||
- 明文: 仅包含大写字母的字符串,不含标点符号和空格
|
||||
- 输出:
|
||||
- 密文: 十六进制字符串(包含小写字母a-e)
|
||||
- 准备:
|
||||
- 密钥(SHA哈希值)
|
||||
- 对"SECRET_KEY"执行SHA-256运算,得到'73ef2a4edd7a7fbf07fd5f6faf99674dc0c25a025fd74c221f4c35849e5c0fb3'
|
||||
- 加密步骤:
|
||||
- 将明文字符串转换为字节序列(ASCII编码)
|
||||
- 使用密钥对每个字节进行异或(XOR)运算加密。重复使用密钥使其长度与明文字节数相同
|
||||
- 将加密后的字节序列转换为十六进制字符串作为密文输出"""
|
||||
|
||||
def get_decode_rule(self,):
|
||||
return """解密规则:
|
||||
- 输入:
|
||||
- 密文: 十六进制字符串(包含小写字母a-e)
|
||||
- 输出:
|
||||
- 明文: 仅包含大写字母的字符串,不含标点符号和空格
|
||||
- 准备:
|
||||
- 密钥(与加密相同,是通过SHA-256获得的哈希值)
|
||||
- 解密步骤:
|
||||
- 将密文字符串转换为字节序列
|
||||
- 使用密钥对每个字节进行异或(XOR)运算解密(解密过程与加密过程相同)
|
||||
- 将解密后的字节序列转换为明文字符串"""
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue