在leancloud的后台发现导出数据的时候密码加密算法只提供了Ruby和C##的,现在自己写的后台使用的Java,无奈只能自己对照写一个Java的加密算法,基于leancloud完成的加密算法:
salt : fgymbrn2jjozuzm47md4sgopn8ojp3g5fgjbwgbj71hopd61
password : 123456
leancloud _User表里面保存的密码为:w+iSpZN8Jes4XrquQ7fplTsNA6I8tPHv80OAAtvXLFFjsUZb8Ce7PrAjPp3EPZYPB794w2J+0Z+esN9wntJJ0g==
以下是代码:
/**
* @param password
* @param salt
* 用户密码加密算法
* 1、创建 SHA-512 加密算法 hasher
* 2、使用 salt 和 password(原始密码) 调用 hasher.update
* 3、获取加密后的值 hv
* 4、重复 512 次调用 hasher.update(hv),每次hv都更新为最新的 hasher.digest 加密值
* 5、最终的 hv 值做 base64 编码,保存为 password
* @return
* @throws NoSuchAlgorithmException
* @throws UnsupportedEncodingException
*/
public static String test(String password, String salt) throws UnsupportedEncodingException, NoSuchAlgorithmException{
password = salt + password;
MessageDigest messageDisgest = MessageDigest.getInstance("SHA-512");
messageDisgest.update(password.getBytes());
byte byteBuffer[] = messageDisgest.digest();
for(int i = 0; i < 512; i ++){
byteBuffer = messageDisgest.digest(byteBuffer);
}
return new String(Base64.encodeBase64(byteBuffer), "UTF-8");
}
main函数:
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Base64;
public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
System.out.println("main");
String password = test("123456", "fgymbrn2jjozuzm47md4sgopn8ojp3g5fgjbwgbj71hopd61");
System.out.println("password : " + password);
}
控制台输出:
一毛一样。
请支持原创。