RSA加密解密

2022-09-21 12:57:07 字數 4410 閱讀 7348

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裡

@autowired

redistemplateredisrsa;

public static final string rsa_key_pair= "rsa_key_pair_";//每次rsa加密對應的秘鑰

/** *

*/@responsebody

@systemcontrollerlog(description = "獲取rsa公鑰", modulename = "獲取rsa公鑰")

public baseresult getrsapublickey() throws exception

公鑰加密

@autowired

redistemplateredisrsa;

@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...