对称XOR密码库
关于XOR密码
XOR加密是一种用于加密数据的加密方法,很难被暴力破解,即生成随机加密密钥以匹配正确的密钥。XOR加密算法是一种非常有效但易于实现的对称加密方法。由于其有效性和简单性,XOR加密是当今更复杂的加密算法中极其常用的组成部分。在密码学中,简单的XOR密码是一种加性密码,是一种加密算法,它根据原则运行
A XOR 0 = A,
A XOR A = 0,
A XOR B = B XOR A,
(A XOR B) XOR C = A XOR (B XOR C),
(B XOR A) XOR A = B XOR 0 = B
其中XOR表示异或(XOR)运算。此运算有时称为模2加法(或减法,两者相同)。利用此逻辑,可以通过将给定的密钥应用于每个字符的按位XOR运算符来加密文本字符串。要解密输出,只需重新应用带有密钥的XOR函数即可删除密文。
XOR运算符在更复杂的密码中是极其常用的组成部分。如果使用恒定的重复密钥,则简单的XOR密码很容易被频率分析破解。如果消息的内容可以被猜测或以其他方式知晓,则可以揭示密钥。其主要优点是实现简单,并且XOR运算的计算成本很低。因此,简单的重复XOR(即对整个数据使用相同的密钥进行xor运算)密码有时用于隐藏信息,在不需要特定安全性时使用。XOR密码常用于计算机恶意软件中,以增加逆向工程的难度。
如果密钥是随机的,并且长度至少与消息一样长,那么与消息中存在密钥重复相比,XOR密码要安全得多。当密钥流由伪随机数生成器生成时,结果是一个流密码。如果密钥是真正随机的,则结果是一个一次性密码本,它是理论上不可破解的。
任何这些密码中的XOR运算符都容易受到已知明文攻击的影响,因为明文 ^ 密文 = 密钥。通过操作密文来更改解密明文中的任意位也轻而易举。这称为可塑性。
使用示例
import 'package:xor_cipher/xor_cipher.dart';
void main() {
const source = 'Hello ? world!!!';
const secret = 'Top ? secret';
print(
'Source: $source\n'
'Secret: $secret',
);
final encrypted = XOR.encrypt(source, secret, urlEncode: true);
print('Encrypted: $encrypted');
final decrypted = XOR.decrypt(encrypted, secret, urlDecode: true);
print(
'Decrypted: $decrypted\n'
'Identical: ${identical(source, decrypted)}',
);
}
覆盖范围
更新日志
请参阅更改日志以获取所有发布说明。