我正在寻找一个简单而快速的算法来加密/解密一个字符串(长度约为128字节)与密码。
有什么好的算法吗?
添加:自定义算法是绝对OK的。它占用的内存更少--它更好(对于我的情况)。没有额外的课程-完美。
发布于 2011-06-16 20:07:32
下面是一个简单的加密/解密方法。它很弱,所以我提出它是为了,比如说教育目的
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);
}它简单地将短语的字节与密码的字节进行异或运算。同样的方法也可以用于加密和解密。顺便说一句,对于密码分析师来说,这不是一个大挑战,但如果你只需要混淆一些数据,这是一个简单的开始。
为了让它更好一点:不要传递密码字符串,而是传递一个带有随机值的字节数组。但是您想要一个带有密码的方法,这就是为什么我以这种方式实现它;)
发布于 2011-06-16 19:45:24
AES Algorithm:Implementation
AES是私钥或对称密码术的联邦标准。它支持128、192和256的密钥和块大小的组合。
那IDEA - International Data Encryption Algorithm 呢?
IDEA是获得专利且普遍适用的块加密算法的名称,它可以有效地保护传输和存储的数据,防止第三方进行未经授权的访问。
有关实现,请参阅:How to implement IDEA?
发布于 2011-06-16 19:51:40
AES或3DES是非常“标准”的对称密钥加密。河豚是另一种。
例如,检查http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html是否使用了AES和Java。
附注:如果这是为了保护密码之类的东西,那么您应该使用单向散列方法(如MD5或类似方法)。除非您一定要能够解密文本,否则单向散列要安全得多。例如,当在数据库中存储密码时,您将散列密码(使用类似MD5的内容)并将其存储。然后,通过对用户输入进行散列并将其与存储在数据库中的散列值进行比较来完成登录验证。
https://stackoverflow.com/questions/6371246
复制相似问题