leancloud 密码加密算法 Java版

在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);
    }

控制台输出:

控制台输出

一毛一样。

本文链接 www.bigcode.top

请支持原创。

你可能感兴趣的:(leancloud 密码加密算法 Java版)