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循环将所有字节抛出到文件中或?因为当我尝试使用我的类时,无论使用什么字符串,我都会得到相同的字节数组?再次原谅我的完全无知,但是我如何将字节数组格式化为哈希字符串,以便我可以对用户密码进行简单加密,然后进行登录并将两个字符串相互比较?
非常感谢帮助,如果您有傲慢的评论和喜欢,请不要完全回答我的帖子!
谢谢!
答案 0 :(得分:2)
如果要将字节数组存储为字符串,请使用Base64对其进行编码;当你稍后读入字符串时,然后将其解码回字节数组。 (如果您想在URL中传输字节数组,这也很有用;请注意,结果字符串将比原始字节数组大33%)
如果您只想将字节数组写入文件,请使用FileOutputStream#write(byte[] b)