文档章节

RSA加解密

宿小帅
 宿小帅
发布于 2016/09/20 15:04
字数 188
阅读 12
收藏 0
调用代码进行rsa私钥解密:
byte[] bytes = RsaUtils.decryptByPrivateKey(new Base64().decode(context), key);
//加密后字符
String decryptContext = new String(bytes, "UTF-8");
类:RsaUtils
/**
     * <P>
     * 私钥解密
     * </p>
     *
     * @param encryptedData 已加密数据
     * @param privateKey    私钥(BASE64编码)
     * @return
     * @throws Exception
     */
    public static byte[] decryptByPrivateKey(byte[] encryptedData, String privateKey)
            throws Exception {
        byte[] keyBytes = decode(privateKey);
        PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
        Key privateK = keyFactory.generatePrivate(pkcs8KeySpec);
        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
        cipher.init(Cipher.DECRYPT_MODE, privateK);
        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;
        }
        byte[] decryptedData = out.toByteArray();
        out.close();
        return decryptedData;
    }

    /**
     * <p>
     * BASE64字符串解码为二进制数据
     * </p>
     *
     * @param base64
     * @return
     * @throws Exception
     */
    public static byte[] decode(String base64) throws Exception {
//        return Base64.decode(base64.getBytes());
        return new org.apache.commons.codec.binary.Base64().decode(base64.getBytes());
    }

© 著作权归作者所有

上一篇: POI操作excel
下一篇: Git 命令操作
宿小帅
粉丝 12
博文 103
码字总数 37071
作品 0
杨浦
程序员
私信 提问
SpringCloud(第 033 篇)配置客户端ConfigClient链接经过对称加解密的配置微服务

SpringCloud(第 033 篇)配置客户端ConfigClient链接经过对称加解密的配置微服务 - 一、大致介绍 二、实现步骤 2.1 添加 maven 引用包 2.2 添加应用配置文件(springms-config-client-encr...

HMILYYLIMH
2017/10/18
77
0
unix下利用openssl对大文件进行aes加解密

由于项目需要文件传输过程中对其进行加解密,所以就在网上查找下加解密的相关介绍,最开始采用RSA加解密算法,先是利用RSAEuro折腾了半天编译的环节卡住了(编译报错查不出原因),后面网上发...

wty530
2014/12/17
0
0
javax.crypto.BadPaddingException: Blocktype mis...

错误:javax.crypto.BadPaddingException: Blocktype mismatch 1.最近做RSA加密用于增强android客户机与服务器(JavaEE)数据传输的安全性。发现在andorid上生成的(密钥对由服务器在windows下...

cwalet
2011/11/23
5K
3
Java--使用公私钥对加解密

Java-使用公私钥对加解密 一,问题描述 当你在某些安全行业,比如说金融,在与外部对接接口时,常常会用到加解密,今天我们 主要来简单记录下有关如何使用 Java 去实现加解密 本博客适用于使...

fajor
2016/09/13
56
0
openssl 非对称加密DSA,RSA区别与使用介绍

openssl RSA 加解密 RSA是基于数论中大素数的乘积难分解理论上的非对称加密法,使用公私钥的方法进行加解密 公钥 用于加密,它是向所有人公开的 ; 私钥用于解密,只有密文的接收者持有 生成一...

伽罗kapple
2016/02/22
197
0

没有更多内容

加载失败,请刷新页面

加载更多

为构建社交关系链手淘都做了啥?

作者|王卫(泓冰) 出品|阿里巴巴新零售淘系技术部 01、淘宝社交关系推荐的背景 1、互联网下半场到来:互联网的下半场,人口红利消失,各大平台需要对用户做精细化运营,用户的增长和留存是每一...

阿里云官方博客
22分钟前
3
0
Iaas/Paas/Saas有何区别,一个故事告诉你

云计算有三种服务模式,IaaS,PaaS和SaaS。单从英文全称去理解,他们分别是“基础设施即服务”“平台即服务”和“软件即服务”。 这样翻译过来可不好理解,但是我们可以举个例子。现在我们就以...

JEPaaS云平台
29分钟前
4
0
温度传感器怎么测好坏

  温度传感器也就是负温度系数热敏电阻,温度越高,电阻越小,测量时先看其阻值能不能根据温度的变化而变,再看其变化的阻值是不是在标定的范围之内。   有以下四种方法;   1、若是有...

仙溪
30分钟前
3
0
zk中ZooKeeperServer解析

内部类 ChangeRecord 处理PrepRP和FinalRP之间的信息 static class ChangeRecord { ChangeRecord(long zxid, String path, StatPersisted stat, int childCount, List<ACL> acl) {......

writeademo
40分钟前
3
0
LNMP---安装worrdpress、discuz,域名重定向,用户认证,nginx访问日志

4.34 安装wordpress 4.35 安装discuz 4.36 域名重定向 4.37 用户认证 4.38 nginx访问日志 一、安装wordpress 创建博客: 添加一个博客的虚拟主机 blog.tobe.com.conf 做如下更改 安装博客wor...

tobej
42分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部