这是加密和解密字符串的可行方法吗?

时间:2015-02-26 21:38:54

标签: java security

我在健康类中尝试使用不可逆转的东西加密和解密字符串时有这个想法;随机。加密数据的问题是人们通常可以从最终的加密版本中解密它。在我的例子中,我认为这是不可能的,因为代表加密版本的随机数使用由原始未加密字符串的散列产生的种子来制作它。据我所知,不可能取一个数字并弄清楚用什么种子来随机获取它,所以这应该使这100%不可解密。如果有的话,你们可以告诉我,如果有任何瑕疵吗?这是代码:

public static void main(String[] args)  {
    String hey1 = encrypt("hey");
    System.out.println(decrypt(hey1,"hey"));
    System.out.println(decrypt(hey1,"this won't work"));
}

public static String encrypt(String s) {
    return new Random(s.hashCode()).nextFloat()+"";

}

public static boolean decrypt(String encrypted, String original) {
    String encryptednew = encrypt(original);
    if (encrypted.equals(encryptednew))
        return true;
    return false;
}

1 个答案:

答案 0 :(得分:3)

加密表明您可以解密它。你正在创造什么,如果它无法恢复到它的原始,我相信是一个哈希。这可用于检查密码是否相同,但不能用于发送秘密消息。

同样,这是“不可解密的”:

public String encrypt(String input){

    return "Boo";

}

这是真的,因为给定字符串“Boo”,你无法分辨输入是什么。 但是,创建哈希对密码很有用,哈希是可以验证的东西。例如,如果将密码发送到服务器,则不存储原始密码,而是存储散列。下次将密码发送到服务器时,它可以计算散列并查看它是否与存储的相同。为了获得合理的安全级别,还需要使用盐,这是我建议查找的内容。