已知公钥pubkey,进行RSA公钥加密
生活随笔
收集整理的這篇文章主要介紹了
已知公钥pubkey,进行RSA公钥加密
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?RSA加密解密的例子非常多,但是已知pubkey,然后進行RSA公鑰加密的很少,原理都差不多,
下面就是個簡單的例子:
首先拿到pubkey,拿到是字符串的形式,需要轉一下,然后進行加密,返回的是已經加密好的字符串。
import java.io.ByteArrayOutputStream; import java.security.KeyFactory; import java.security.PublicKey; import java.security.spec.X509EncodedKeySpec;import javax.crypto.Cipher;import org.apache.commons.codec.binary.Base64; import com.epoint.core.utils.config.ConfigUtil;public class RsaUtils {/*** RSA最大加密明文大小*/private static final int MAX_ENCRYPT_BLOCK = 117;//已拿到的公鑰串private static String PUBLICKEY = "已知的公鑰串";/*** * 根據公鑰加密* @param data* @return* @throws Exception * @exception/throws [違例類型] [違例說明]* @see [類、類#方法、類#成員]*/public static String encrypt(String data) throws Exception{byte[] decode = Base64.decodeBase64(PUBLICKEY);PublicKey pubKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decode));//RSA加密Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.ENCRYPT_MODE, pubKey);byte[] dataByte = data.getBytes("UTF-8");int inputLen = dataByte.length;ByteArrayOutputStream out= new ByteArrayOutputStream();int offSet = 0;byte[] cache;int i = 0;// 對數據分段加密while (inputLen - offSet > 0) {if (inputLen - offSet > MAX_ENCRYPT_BLOCK) {cache = cipher.doFinal(dataByte, offSet, MAX_ENCRYPT_BLOCK);} else {cache = cipher.doFinal(dataByte, offSet, inputLen - offSet);}out.write(cache, 0, cache.length);i++;offSet = i * MAX_ENCRYPT_BLOCK;}byte[] encryptedData = out.toByteArray();out.close();String outStr = Base64.encodeBase64String(encryptedData);return outStr;} }?
總結
以上是生活随笔為你收集整理的已知公钥pubkey,进行RSA公钥加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql创建省份,市表
- 下一篇: 维度建模详解