乙個簡單的XOR加密方法

2021-09-26 20:37:38 字數 1534 閱讀 8587

主要用來加密流資料,因為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...