当前位置: 首页 > news >正文

网站建设公司上海站霸百度电商推广

网站建设公司上海站霸,百度电商推广,上线了怎么做网站,自己做提卡网站RSA私钥解密操作 一、背景二、操作三、常见问题3.1 invalid key format3.2 解密的数据太长3.3 Decryption error 一、背景 项目数据库中存放的敏感字段已使用rsa加密的方式,将内容加密成密文存放, 现在需要在使用的时候,使用私钥进行解密。 二、操作 …

RSA私钥解密操作

  • 一、背景
  • 二、操作
  • 三、常见问题
    • 3.1 invalid key format
    • 3.2 解密的数据太长
    • 3.3 Decryption error

一、背景

项目数据库中存放的敏感字段已使用rsa加密的方式,将内容加密成密文存放,
现在需要在使用的时候,使用私钥进行解密。

二、操作

代码如下:

public class RsaUtil {private static final int MAX_DECRYPT_BLOCK = 256;/*** 解密方法* @param content  需解密内容* @param privateKey 私钥* @return*/public static String decryptByPrivateKey(String content,String privateKey) {String decryptContent;try {PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKey));PrivateKey priKey  = KeyFactory.getInstance("RSA").generatePrivate(keySpec);//RSA解密Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.DECRYPT_MODE, priKey);log.info("provider:{}",cipher.getProvider());byte[] encryptedData = Base64.getDecoder().decode(content);int inputLen = encryptedData.length;ByteArrayOutputStream out = new ByteArrayOutputStream();int offSet = 0;byte[] cache;int i = 0;// 对数据分段解密while (inputLen - offSet > 0) {if (inputLen - offSet > MAX_DECRYPT_BLOCK) {cache = cipher.doFinal(encryptedData, offSet, MAX_DECRYPT_BLOCK);} else {cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet);}out.write(cache, 0, cache.length);i++;offSet = i * MAX_DECRYPT_BLOCK;}out.close();decryptContent = out.toString();} catch (Exception e){log.error("rsa解密内容:"+content+"失败",e);throw new RsaException("rsa解密内容:"+content+"失败",e);}return decryptContent;}}

三、常见问题

3.1 invalid key format

错误信息如下:

Caused by: java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key formatat sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:217)at java.security.KeyFactory.generatePrivate(KeyFactory.java:372)

原因:
私钥转成byte数组时没有使用base64解码的方式:
在这里插入图片描述

3.2 解密的数据太长

参考文章:
https://blog.csdn.net/qq_42795685/article/details/107517196

错误信息如下:

IllegalBlockSizeException: Data must not be longer than 256 bytes

解决:
采用分段解密的方式。具体请参考代码中分段解密注释的部分

3.3 Decryption error

参考文章:

  1. https://blog.csdn.net/a1017680279/article/details/79061412?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-79061412-blog-71627949.235%5Ev38%5Epc_relevant_anti_vip_base&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-79061412-blog-71627949.235%5Ev38%5Epc_relevant_anti_vip_base&utm_relevant_index=1

  2. https://juejin.cn/post/7182388540259450940

错误信息:

javax.crypto.BadPaddingException: Decryption error

原因:
代码中采取分段解密的方式时,配置的最大解密长度不正确,即以上代码中的MAX_DECRYPT_BLOCK 变量配置长度有问题;

解决:
MAX_DECRYPT_BLOCK应等于密钥长度/8(1byte=8bit),
“密钥长度”一般只是指模值的位长度。目前主流可选值:1024、2048、3072、4096,
我使用的密钥长度是2048,所以配置的最大解密长度应该是256。

http://www.tj-hxxt.cn/news/7360.html

相关文章:

  • 最早做弹幕的网站重庆网页优化seo
  • 欧美在路边给了钱就可以做网站如何在百度上营销
  • 镇江市质监站网址网站推广的10种方法
  • 网站建设实训建立网站的软件
  • 七色板网站建设百度官方版
  • 温州市网站制作多少钱怎样创建网页
  • 做兼职一般去哪个网站深圳网站建设找哪家公司好
  • 每个网站都有服务器吗百度网站优化方案
  • 广西桂林旅游攻略自由行攻略seo的公司排名
  • 四川眉山今天疫情实时动态防控河北网站seo地址
  • 外行做网站黄页88
  • 网站建设面谈销售话术网络营销方案范文
  • 电子商务网站建设与维护课程标准nba最新资讯
  • 网站文件夹没有权限看广告得收益的app
  • 网站搭建合同范本哈尔滨怎样关键词优化
  • 网络优化网络维护网络建站排名优化培训
  • dedecms网站乱码免费无代码开发平台
  • 网站建设项目需求分析摘抄一小段新闻
  • 做公司网站合同门户网站
  • 网站建设哪家公司好网站建设 公司网站制作费用一览表
  • 网站地图的作用宁德市人社局官网
  • 福田蒙派克10座黄牌seo优化方法有哪些
  • 免费网站域名注册个人传统营销和网络营销的区别
  • 郑州网站推广公司电话16888精品货源入口
  • 品牌网站定制开发厦门网络推广培训
  • 网站建设制度网站查询seo
  • 文学类网站怎么做广州seo网站多少钱
  • 聊城手机网站制作深圳网络营销
  • 创造与魔法官方网站做自己喜欢的事百度资讯指数
  • 网站icp备案 年检吉林seo刷关键词排名优化