主要用來加密流資料,因為aes太慢需求也不需要很重的加密,所有選擇用xor加密,但是發現乙個問題,就是加密內容是一竄json都是以「{{」開頭,xor加密太簡單導致很容易就猜出密碼,所以改進了一下,用key的ascii碼合計做開頭位置開頭位移,以及最後反覆多次加密來解決
# 加密 key金鑰 data資料 fq加密次數
@staticmethod
def xor_encryption(key, data, encode="utf-8", fq=0):
key_bytes = key if type(key) == bytes else key.encode(encode)
data_bytes = data if type(data) == bytes else data.encode(encode)
key_num = 0
bytes_len = len(data_bytes)
key_len = len(key_bytes)
for key_item in key_bytes:
key_num += key_item
data_index = key_num % bytes_len
rtn = bytes([data_bytes[(i + data_index) % bytes_len] ^ key_bytes[i % key_len] for i in range(0, bytes_len)])
if fq > 0:
rtn = commonbase.xor_encryption(key=key, data=rtn, fq=fq-1)
return rtn
# 解密 key金鑰 data資料 fq加密次數
@staticmethod
def xor_decrypt(key, data, encode="utf-8", fq=0):
key_bytes = key if type(key) == bytes else key.encode(encode)
data_bytes = data if type(data) == bytes else data.encode(encode)
key_num = 0
bytes_len = len(data_bytes)
key_len = len(key_bytes)
for key_item in key_bytes:
key_num += key_item
data_index = bytes_len - key_num % bytes_len
data_all = bytes([data_bytes[i] ^ key_bytes[i % key_len] for i in range(0, bytes_len)])
rtn = data_all[data_index:] + data_all[0:data_index]
if fq > 0:
rtn = commonbase.xor_decrypt(key=key, data=rtn, fq=fq-1)
return rtn
乙個簡單的加密 解密方法
private function encryptstring strstring dim charhexset,intstringlen,strtemp,strraw,i,intkey,intoffset randomize timer intkey round rnd 1000000 100000...
C 寫乙個簡單的加密程式
des對稱加密,是一種比較傳統的加密方式,其加密運算 解密運算使用的是同樣的金鑰,資訊的傳送者和資訊的接收者在進行資訊的傳輸與處理時,必須共同持有該密碼 稱為對稱密碼 是一種對稱加密演算法。des 使用乙個 56 位的金鑰以及附加的 8 位奇偶校驗位,產生最大 64 位的分組大小。這是乙個迭代的分組...
乙個簡單的日誌方法
file g filelog null void loginit bool writelog lpctstr format,int res tcsftime outbuf,128,t 20 y年 m月 d日 h m s localtime tm tchar lpszinfobuf 1024 va l...