Java与Postgresql中的加解密API对应

来源:互联网 发布:同济大学网络教育 编辑:程序博客网 时间:2024/05/17 22:37

Base64

加密public static String encryptBASE64(byte[] key) throws Exception {    //return (new BASE64Encoder()).encodeBuffer(key);//使用sun的api,不推荐    return (new org.apache.commons.codec.binary.Base64()).encodeBase64String(key.getBytes());      }解密public static byte[] decryptBASE64(String key) throws Exception {    //return (new BASE64Decoder()).decodeBuffer(key);//使用sun的api,不推荐    return (new org.apache.commons.codec.binary.Base64()).decodeBase64(key); }       PG数据库dafc=> select encode('tcps1234','base64');    encode    -------------- dGNwczEyMzQ=(1 row)dafc=> select encode('tcps1234'::bytea,'base64');    encode    -------------- dGNwczEyMzQ=(1 row)dafc=> select decode('dGNwczEyMzQ=','base64');  decode  ---------- tcps1234(1 row)

MD5

String data ="tcps1234";          MessageDigest md5= MessageDigest.getInstance("MD5");//md5.update("tcps1234".getBytes());//md5.digest()byte[] md5Byte = md5.digest(data.getBytes());System.out.println(bytesToHexStr(md5Byte));//006E275315C436215775382107FDF230PG数据库dafc=> select md5('tcps1234');               md5                ---------------------------------- 006e275315c436215775382107fdf230(1 row)dafc=> select md5('tcps1234'::bytea);               md5                ---------------------------------- 006e275315c436215775382107fdf230(1 row)dafc=> select encode(digest('tcps1234','md5'),'hex');              encode              ---------------------------------- 006e275315c436215775382107fdf230(1 row)

SHA

这里写图片描述

PG数据库
这里写图片描述

注意Java中SHA与SHA-1是一样的,PG中不一样,另外JDK中未实现SHA-224,PG中有
这里写图片描述

HMAC

public class HmacUtil {    /**     * MAC算法可选以下多种算法     *      * HmacMD5      * HmacSHA1      * HmacSHA256      * HmacSHA384      * HmacSHA512     */    public static final String KEY_MAC = "HmacMD5";    public static void main(String[] args) throws Exception {        String inputStr = "tcps天津通卡";        byte[] inputData = inputStr.getBytes();        String macKey = "a1a2a3a4a5a6a7a8";        SecretKey secretKey = new SecretKeySpec(macKey.getBytes(), KEY_MAC);        Mac mac = Mac.getInstance(secretKey.getAlgorithm());        mac.init(secretKey);        byte[] macData =  mac.doFinal(inputData);        System.out.println(Util.getHexString(macData));    }}PG数据库dafc=> select encode(hmac('tcps天津通卡','a1a2a3a4a5a6a7a8', 'md5'),'hex');              encode              ---------------------------------- 324d53787c75a0460bf8f0f21a029a93(1 row)dafc=> select encode(hmac('tcps天津通卡','a1a2a3a4a5a6a7a8', 'sha1'),'hex');                  encode                  ------------------------------------------ a0886f87784807946d9985b5084346d91c783c9a(1 row)dafc=> select encode(hmac('tcps天津通卡','a1a2a3a4a5a6a7a8', 'sha512'),'hex');                                                              encode                                                  --------------------------------------------------------- fdbc06f863d3f62abaff409d6f9d6029b4c5d51fc097b4c129c584c11904c8a7f3bbb10d8758f59c79553a3549e231f2b088a37cde00041c5fed8315b5b9aefb(1 row)

DES

    public static void main(String[] args){        // 定义加密算法,可用 DES,DESede,Blowfish        String Algorithm = "DES";         byte[] DEFAULT_DES_KEY = { (byte) 0x21, (byte) 0x01, (byte) 0x11, (byte) 0x82, (byte) 0x32, (byte) 0x85,(byte) 0x128, (byte) 0x65 };        String data = "abcdefgh";        SecretKey deskey = new SecretKeySpec(DEFAULT_DES_KEY, Algorithm);        Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding");        cipher.init(Cipher.ENCRYPT_MODE, deskey);        String encryptedData = bytesToHexStr(cipher.doFinal(data.getBytes()));        System.out.println("encry data:" + encryptedData);        cipher.init(Cipher.DECRYPT_MODE, deskey);        System.out.println("decrypt data:" + new String(cipher.doFinal(hexStrToBytes(encryptedData))));    }

这里写图片描述

原创粉丝点击