我正在寻找一种简单快捷的算法来用密码加密/解密字符串(长度约为128字节)。
有什么好的算法吗?
添加:自定义算法完全可以。它占用的内存越少越好(对我来说)。没有额外的课程-完美。
AES Algorithm
:Implementation
AES是私钥或对称密码学。它支持键和块大小为128、192和256。
IDEA - International Data
Encryption Algorithm
怎么样?
IDEA是专利和通用块加密算法,允许有效保护传输和存储的数据第三方未经授权的访问。
有关实现,请参阅:How to implement IDEA?
检查http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html例如用于将AES与Java结合使用。
附带说明:如果这是为了保护密码之类的东西,那么你真的应该使用单向哈希方法(比如MD5或类似方法)。除非你绝对必须能够解密文本,否则单向哈希要安全得多。例如,当将密码存储在数据库中时,你会对密码进行哈希处理(使用类似MD5的方法)并将其存储。然后,通过对用户输入进行哈希处理并将其与存储在数据库的哈希值进行比较来验证登录名。
请参阅Java Crypto!对于Encryption and Decryption
存在微小加密算法(http://en.wikipedia.org/wiki/XXTEA)。
它非常简单快速(对于加密算法),并且有Java实现。
这里有一个简单的加密/解密方法。它很弱,所以我提出它是为了,比如说教育目的:
public static String encDec(String input, String password) {
byte[] in = input.getBytes();
byte[] key = password.getBytes();
byte[] result = new byte[in.length];
int k = 0;
for (int i = 0; i < in.length; i++) {
result[i] = (byte)(in[i] ^ key[k]);
k++;
if (k == key.length)
k=0;
}
return new String(result);
}
它只是将短语的字节与密码的字节异或。可以使用相同的方法进行加密和解密。顺便说一句,对于加密货币分析师来说,这不是一个大挑战,但如果你只需要模糊一些数据,这是一个简单的开始。
为了让它稍微好一点:不要传递密码字符串,而是传递一个带有随机值的字节数组。但你想要一个带密码的方法,这就是为什么我以的方式实现了它。)