单向加密,将散列字符串保存到文件中?

时间:2013-04-25 19:45:50

标签: java encryption hash

public static byte[] createHash( String stringToHash ) throws UnsupportedEncodingException {

    MessageDigest digestor;

    byte[] byteInput = null;

    try {
        digestor = MessageDigest.getInstance("SHA-1");
        digestor.reset();
        byteInput = digestor.digest( stringToHash.getBytes("UTF-8") );
    } catch( NoSuchAlgorithmException e ){};

    return byteInput;

}

所以我试图制作一个非常简单的方法,单向加密字符串,尽管我努力通过在线阅读来理解它,但我仍然是一个完整的加密noob。

问题是我想将这些信息存储在文件/ dbase中(这实际上是无关紧要的,因为我不知道如何获取或插入信息到dbase)。假设我在文本文件中没有任何盐的情况下非常简单地存储它,我如何将字节数组写入文本文件?使用单个for循环将所有字节抛出到文件中或?因为当我尝试使用我的类时,无论使用什么字符串,我都会得到相同的字节数组?再次原谅我的完全无知,但是我如何将字节数组格式化为哈希字符串,以便我可以对用户密码进行简单加密,然后进行登录并将两个字符串相互比较?

非常感谢帮助,如果您有傲慢的评论和喜欢,请不要完全回答我的帖子!

谢谢!

1 个答案:

答案 0 :(得分:2)

如果要将字节数组存储为字符串,请使用Base64对其进行编码;当你稍后读入字符串时,然后将其解码回字节数组。 (如果您想在URL中传输字节数组,这也很有用;请注意,结果字符串将比原始字节数组大33%)

如果您只想将字节数组写入文件,请使用FileOutputStream#write(byte[] b)