rsautil.j**a
package com.soc.cloud.util;import com.soc.cloud.exception.commonerror;
import com.soc.cloud.param.baseerrresult;
import com.soc.cloud.util.redis.redisparam;
import org.springframework.data.redis.core.redistemplate;
import j**a.io.bytearrayoutputstream;
import j**a.math.biginteger;
import j**a.security.keyfactory;
import j**a.security.keypair;
import j**a.security.keypairgenerator;
import j**a.security.nosuchalgorithmexception;
import j**a.security.privatekey;
import j**a.security.publickey;
import j**a.security.securerandom;
import j**a.security.inte***ces.rsaprivatekey;
import j**a.security.inte***ces.rsapublickey;
import j**a.security.spec.invalidkeyspecexception;
import j**a.security.spec.rsaprivatekeyspec;
import j**a.security.spec.rsapublickeyspec;
import j**ax.crypto.cipher;
/** *
* rsa 工具類。提供加密,解密,生成金鑰對等方法。
* */
public class rsautil catch (exception e)
}/**
* 生成公鑰
* @param modulus
* @param publicexponent
* @return
* @throws exception
*/public static rsapublickey generatersapublickey(byte modulus,
byte publicexponent) throws exception catch (nosuchalgorithmexception ex)
rsapublickeyspec pubkeyspec = new rsapublickeyspec(new biginteger(
modulus), new biginteger(publicexponent));
try catch (invalidkeyspecexception ex)
}/**
* 生成私鑰
* @param modulus
* @param privateexponent
* @return
* @throws exception
*/public static rsaprivatekey generatersaprivatekey(byte modulus,
byte privateexponent) throws exception catch (nosuchalgorithmexception ex)
rsaprivatekeyspec prikeyspec = new rsaprivatekeyspec(new biginteger(
modulus), new biginteger(privateexponent));
try catch (invalidkeyspecexception ex)
}/**
* * 加密 *
** @param pk
* 加密的金鑰 *
* @param data
* 待加密的明文資料 *
* @return 加密後的資料 *
* @throws exception
*/public static byte encrypt(publickey pk, byte data) throws exception
return raw;
} catch (exception e)
}/**
* * 解密 *
** @param pk
* 解密的金鑰 *
* @param raw
* 已經加密的資料 *
* @return 解密後的明文 *
* @throws exception
*/public static byte decrypt(privatekey pk, byte raw) throws exception
return bout.tobytearray();
} catch (exception e)
}/**
* rsa 公用加密,用秘鑰解密,然後base64加密返回
* @param password
* @param keypair
* @return
* @throws exception
*/public static string passwordencrypt(string password, keypair keypair ) throws exception
/*** rsa 公用加密,用秘鑰解密,然後base64加密返回
* @return
*/public static string passwordencrypt(boolean passwordverify,string password, keypair keypair ) throws exception
// }
string psaaword = encryptutils.encodemd5string(
encryptutils.encodebase64string(rsapsaaword));
return psaaword;
}/**
* rsa 公用加密,用秘鑰解密, 返回真實密碼
* @return
*/public static string originalpasswordencrypt(string password, keypair keypair ) throws exception
/*** 16進製制 to byte
* @param hexstring
* @return byte
*/public static byte hexstringtobytes(string hexstring)
hexstring = hexstring.touppercase();
int length = hexstring.length() / 2;
char hexchars = hexstring.tochararray();
byte d = new byte[length];
for (int i = 0; i < length; i++)
return d;
}/**
* convert char to byte
* @param c char
* @return byte
*/private static byte chartobyte(char c)
}
獲取rsa公鑰,將 秘鑰對 存redis裡
@autowiredredistemplateredisrsa;
public static final string rsa_key_pair= "rsa_key_pair_";//每次rsa加密對應的秘鑰
/** *
*/@responsebody
@systemcontrollerlog(description = "獲取rsa公鑰", modulename = "獲取rsa公鑰")
public baseresult getrsapublickey() throws exception
公鑰加密
@autowiredredistemplateredisrsa;
@override
public user login(string loginid, string password) throws exception
return user;
}
解密同理
RSA加密解密
擷取自我的部落格 因為專案需要,最近做乙個rsa加密解密的介面,使用go進行開發,介面使用jsonrpc,go 對rsa加密解密有很好的支援,不過由於受限於底層微控制器,所以上層應用需要做一些稍微的調整。rsa是一種非對稱加密演算法,什麼是非對稱加密演算法呢,那就是公鑰 私鑰可互相進行加密解密 公鑰...
RSA加密解密
rsa加密使用公鑰加密,使用私鑰解密,rsa可以自己隨機生成一組公鑰和私鑰 rsa隨機生成一組公鑰和秘鑰 隨機生成公鑰和秘鑰 沒建立乙個rsacryptoserviceprovider物件,能生成一組隨機的秘鑰,物件相同不管執行多少次方法都是生成的同一組秘鑰 公鑰 私鑰 public static ...
RSA 加密解密記錄
rsa 加密長度有限,一般只使用在重要的資料上,過長需要拼接。private static void create oaepvar msg 加密測試資訊 rsacryptoserviceprovider rsa new 使用rsa加密。rsa.importcspblob convert.fromba...