易语言文本DES加密工具

易语言 2020-08-21 18:53:14

易语言文本DES加密工具

' // R[16]-L[16] 构成64位,经初始逆置换
.变量循环首 (0, 64 - 1, 1, i)
.如果 (bInitReSwapTable [i + 1] ≤ 32)
.如果 (位与 (RMsg [16 + 1] [右移 (bInitReSwapTable [i + 1] - 1, 3) + 1], bBitMask [位与 (位取反 (bInitReSwapTable [i + 1] - 1), 7) + 1]) ≠ 0)
bCryptedMsg [右移 (i, 3) + 1] = 位或 (bCryptedMsg [右移 (i, 3) + 1], bBitMask [位与 (位取反 (i), 7) + 1])
.否则
bCryptedMsg [右移 (i, 3) + 1] = 位与 (bCryptedMsg [右移 (i, 3) + 1], 位取反 (bBitMask [位与 (位取反 (i), 7) + 1]))
.如果结束

.否则
.如果 (位与 (LMsg [16 + 1] [右移 (bInitReSwapTable [i + 1] - 32 - 1, 3) + 1], bBitMask [位与 (位取反 (bInitReSwapTable [i + 1] - 32 - 1), 7) + 1]) ≠ 0)
bCryptedMsg [右移 (i, 3) + 1] = 位或 (bCryptedMsg [右移 (i, 3) + 1], bBitMask [位与 (位取反 (i), 7) + 1])
.否则
bCryptedMsg [右移 (i, 3) + 1] = 位与 (bCryptedMsg [右移 (i, 3) + 1], 位取反 (bBitMask [位与 (位取反 (i), 7) + 1]))
.如果结束

.如果结束

.变量循环尾 ()

len = 取文本长度 (字符串)
.如果真 (len = 0 或 位与 (len, 1) = 1)
返回 (“”)
.如果真结束
原数据 = 取空白字节集 (len ÷ 2)
.计次循环首 (len ÷ 2, i)
原数据 [i] = 辅_16进制到10进制 (取文本中间 (字符串, (i - 1) × 2 + 1, 2))
.计次循环尾 ()
结果数据 = Des.DES_解密 (原数据, 计算8位密钥 (密钥))
结果文本 = 到文本 (结果数据)
返回 (结果文本)