RSA加密报错,哪位遇到过类似问题~跪求指点

import java.security.Key;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.Cipher;
import sun.misc.BASE64Decoder;

public String decrypt(){
Map keyMap= new HashMap(4);
String decryptModeCode = null;
Cipher cipher = null;
BASE64Decoder decoder = new BASE64Decoder();
try {
cipher = javax.crypto.Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(javax.crypto.Cipher.DECRYPT_MODE, (Key) keyMap.get("RSAPrivateKey"));
decryptModeCode = new String(cipher.doFinal(decoder.decodeBuffer("中文")),"gb2312");
System.out.println("decryptModeCode is : " + decryptModeCode );
} catch (Exception e) {
e.printStackTrace();
}
return decryptModeCode;
}

0

2个回答

问题自己搞定了,大意了,静下心来想想就行!

-1
 package security;

import java.io.ByteArrayOutputStream;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;

import javax.crypto.Cipher;

/**
 * <p>
 * RSA公钥/私钥/签名工具包
 * </p>
 * <p>
 * 罗纳德·李维斯特(Ron [R]ivest)、阿迪·萨莫尔(Adi [S]hamir)和伦纳德·阿德曼(Leonard [A]dleman)
 * </p>
 * <p>
 * 字符串格式的密钥在未在特殊说明情况下都为BASE64编码格式<br/>
 * 由于非对称加密速度极其缓慢,一般文件不使用它来加密而是使用对称加密,<br/>
 * 非对称加密算法可以用来对对称加密的密钥加密,这样保证密钥的安全也就保证了数据的安全
 * </p>
 * 
 * @author IceWee
 * @date 2012-4-26
 * @version 1.0
 */
public class RSAUtils {

    /**
     * 加密算法RSA
     */
    public static final String KEY_ALGORITHM = "RSA";

    /**
     * 签名算法
     */
    public static final String SIGNATURE_ALGORITHM = "MD5withRSA";

    /**
     * 获取公钥的key
     */
    private static final String PUBLIC_KEY = "RSAPublicKey";

    /**
     * 获取私钥的key
     */
    private static final String PRIVATE_KEY = "RSAPrivateKey";

    /**
     * RSA最大加密明文大小
     */
    private static final int MAX_ENCRYPT_BLOCK = 117;

    /**
     * RSA最大解密密文大小
     */
    private static final int MAX_DECRYPT_BLOCK = 128;

    /**
     * <p>
     * 生成密钥对(公钥和私钥)
     * </p>
     * 
     * @return
     * @throws Exception
     */
    public static Map<String, Object> genKeyPair() throws Exception {
        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM);
        keyPairGen.initialize(1024);
        KeyPair keyPair = keyPairGen.generateKeyPair();
        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
        Map<String, Object> keyMap = new HashMap<String, Object>(2);
        keyMap.put(PUBLIC_KEY, publicKey);
        keyMap.put(PRIVATE_KEY, privateKey);
        return keyMap;
    }

    /**
     * <p>
     * 用私钥对信息生成数字签名
     * </p>
     * 
     * @param data 已加密数据
     * @param privateKey 私钥(BASE64编码)
     * 
     * @return
     * @throws Exception
     */
    public static String sign(byte[] data, String privateKey) throws Exception {
        byte[] keyBytes = Base64Utils.decode(privateKey);
        PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
        PrivateKey privateK = keyFactory.generatePrivate(pkcs8KeySpec);
        Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
        signature.initSign(privateK);
        signature.update(data);
        return Base64Utils.encode(signature.sign());
    }

    /**
     * <p>
     * 校验数字签名
     * </p>
     * 
     * @param data 已加密数据
     * @param publicKey 公钥(BASE64编码)
     * @param sign 数字签名
     * 
     * @return
     * @throws Exception
     * 
     */
    public static boolean verify(byte[] data, String publicKey, String sign)
            throws Exception {
        byte[] keyBytes = Base64Utils.decode(publicKey);
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
        PublicKey publicK = keyFactory.generatePublic(keySpec);
        Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
        signature.initVerify(publicK);
        signature.update(data);
        return signature.verify(Base64Utils.decode(sign));
    }

    /**
     * <P>
     * 私钥解密
     * </p>
     * 
     * @param encryptedData 已加密数据
     * @param privateKey 私钥(BASE64编码)
     * @return
     * @throws Exception
     */
    public static byte[] decryptByPrivateKey(byte[] encryptedData, String privateKey)
            throws Exception {
        byte[] keyBytes = Base64Utils.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>
     * 公钥解密
     * </p>
     * 
     * @param encryptedData 已加密数据
     * @param publicKey 公钥(BASE64编码)
     * @return
     * @throws Exception
     */
    public static byte[] decryptByPublicKey(byte[] encryptedData, String publicKey)
            throws Exception {
        byte[] keyBytes = Base64Utils.decode(publicKey);
        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
        Key publicK = keyFactory.generatePublic(x509KeySpec);
        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
        cipher.init(Cipher.DECRYPT_MODE, publicK);
        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>
     * 公钥加密
     * </p>
     * 
     * @param data 源数据
     * @param publicKey 公钥(BASE64编码)
     * @return
     * @throws Exception
     */
    public static byte[] encryptByPublicKey(byte[] data, String publicKey)
            throws Exception {
        byte[] keyBytes = Base64Utils.decode(publicKey);
        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
        Key publicK = keyFactory.generatePublic(x509KeySpec);
        // 对数据加密
        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
        cipher.init(Cipher.ENCRYPT_MODE, publicK);
        int inputLen = data.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(data, offSet, MAX_ENCRYPT_BLOCK);
            } else {
                cache = cipher.doFinal(data, offSet, inputLen - offSet);
            }
            out.write(cache, 0, cache.length);
            i++;
            offSet = i * MAX_ENCRYPT_BLOCK;
        }
        byte[] encryptedData = out.toByteArray();
        out.close();
        return encryptedData;
    }

    /**
     * <p>
     * 私钥加密
     * </p>
     * 
     * @param data 源数据
     * @param privateKey 私钥(BASE64编码)
     * @return
     * @throws Exception
     */
    public static byte[] encryptByPrivateKey(byte[] data, String privateKey)
            throws Exception {
        byte[] keyBytes = Base64Utils.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.ENCRYPT_MODE, privateK);
        int inputLen = data.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(data, offSet, MAX_ENCRYPT_BLOCK);
            } else {
                cache = cipher.doFinal(data, offSet, inputLen - offSet);
            }
            out.write(cache, 0, cache.length);
            i++;
            offSet = i * MAX_ENCRYPT_BLOCK;
        }
        byte[] encryptedData = out.toByteArray();
        out.close();
        return encryptedData;
    }

    /**
     * <p>
     * 获取私钥
     * </p>
     * 
     * @param keyMap 密钥对
     * @return
     * @throws Exception
     */
    public static String getPrivateKey(Map<String, Object> keyMap)
            throws Exception {
        Key key = (Key) keyMap.get(PRIVATE_KEY);
        return Base64Utils.encode(key.getEncoded());
    }

    /**
     * <p>
     * 获取公钥
     * </p>
     * 
     * @param keyMap 密钥对
     * @return
     * @throws Exception
     */
    public static String getPublicKey(Map<String, Object> keyMap)
            throws Exception {
        Key key = (Key) keyMap.get(PUBLIC_KEY);
        return Base64Utils.encode(key.getEncoded());
    }

}
0
lx624909677
lx624909677 回复oXinLiang12: 采纳我后,我给你发
3 年多之前 回复
oXinLiang12
林家小米 能否把Base64Utils代码发下~~
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
IIS8.5,在调用RSA加密时报错的解决方法
服务器搬迁,从win2003+IIS6.0,转为win2012 r2 + IIS 8.5。登录网站时,发现RSA加密报错:System.Security.Cryptography.CryptographicExceptionrn解决方法: 打开IIS管理器 —— 找到网站对应的“应用程序池” —— 选择右边“高级设置” —— 下拉找到“加载用户配置文件”将默认值“False”改为“True”
java程序RSA加密程序一直报错,错误异常: algid parse error, not a sequence​
其原因是因为,用openssl生成的私钥没有进行pkcs8编码,所以导致程序无法识别。用openssl转一下码就好了,命令如下:nnpkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocryptnn使用转码后的私钥即可。nn...
RSA加密的一些错误的解决方案
错误:Data must not be longer than 117 bytes,Data must not be longer than 128 bytesn 这种错误的根本原因呢是因为有个限制,我查了一下,解决方式呢有更换JDK版本的,还有说分组加密的。我用的是分组加密的方式。RSA+AESn n java.security.InvalidKeyException: invalid key ...
RSA加密界面大量操纵,报错的问题
public String encrypt(String publicKeystore, String plainText) {rn try {rn FileReader fr = new FileReader(publicKeystore);rn BufferedReader br = new BufferedReader(fr);rn String publicKeyStrin...
OPENSSL RSA加密同一程序多次加载密钥会加密解密出错
同一程序采用RSA *pri_key;npri_key=RSA_new();n//只会分配一次空间下次在使用这个pri_key指针会使得实际上没有加载新的密钥。 n换句话说,使用pri_key指针读取两次不同的密钥会使得第二次读取的密钥发生不可预知的错误。 n正确的做法是每次读取密钥前均分配一次空间。
Android RSA加密 在服务端进行RSA解密不成功的问题
如题,原因是因为,加密标准的原因。"RSA/ECB/PKCS1Padding" 与'RSA"rnrnrn   在ANdroid中应该使用这个标准rnCipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");rnrnrnrn在服务端使用这个标准rnCipher cipher = Cipher.getInstance("RSA");
python3.7中RSA加密遇到的问题
python3.7中RSA加密遇到的问题n对于网络上有很多python3.7中RSA加密代码,一般都是生成公钥或者私钥,测试接口的时候公司一般会规定要使用的公钥,则代码就会报错拿登录接口测试举例;n1、问题一:n运行如下代码,发现报错,我们公钥直接传输了字符串,而rsa.encrypt(message, pub_key )里的pub_key 是一个对象;则需要将pub_key 转化为一个pem格式...
关于解决RSA非对称加密时,将密文存入数据库取出后,再对密文解密的时候抛出javax.crypto.BadPaddingException: Data must start with zero
RSA非对称加密,由于其对加密的明文长度有限制,所以通常配合对称加密来操作,即把对称加密中的秘钥加密传送来保证用对称加密的安全性。当我用RSA公钥加密AES的 密钥之后,存入mysql之后,然后再取出来进行解密,但是报错javax.crypto.BadPaddingException: Data must start with zero。我改了半天,终于想了一个解决办法,虽然有些麻烦,但是有效果。
android 端RSA加密过程中遇到的坑
做过android 端 rsa 加密的朋友估计都会遇到一些问题。本人这个问题苦恼了我2天的时间最终搞定。大体说下遇到的问题吧: 客户端生成的秘钥对于同一个字符串而言,一直是相同的比如我用  随机串 “123456” 生成两次 ,得到的结果都是一个值。 客户端生成的秘钥服务端没法解密。(提示秘钥损坏、字符串过程、字符非法等等) 客户端生成的秘钥没法放到头文件 (里面有好多空格)解决的方案: 对于第一
rsa加解密的内容超长的问题解决
一. 现象:rn     有一段老代码用来加密的,但是在使用key A的时候,抛出了异常:javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes。老代码已经做了分段的加密,应该是已经考虑了加密长度的问题才对。换了另一个线上代码中的keyrn B,正常加密没有异常。rnrnrn二. 解决:rn   
小程序 Rsa加密
var RSA = require('rsa.js');//RSA公钥var publicKey_pkcs1 = ''//RSA加密方法function RSAEncrypt(word) { var encrypt_rsa = new RSA.RSAKey(); encrypt_rsa = RSA.KEYUTIL.getKey(publicKey_pkcs1); console.log(en...
RSA出现的错误
rnjavax.crypto.BadPaddingException: Data must start with zerorn rn进行RSA加密和解密的时候,会出现在这样的错误,找了许多答案,有的说是什么byte[]转换为string的时候需要分隔,有的说是“只能公钥加密,私钥解密”rn rn但是在这里,是因为我在分块解密的时候,把byte数组划的块大小限定为64,所以导致错误的,实际上是128...
RSA加密问题(jsencrypt加密 java解密)
我这篇博文就是记录我这2天来踩过的坑,为相关相同需求的朋友提供点帮助。rnrnrn参考文章rnhttp://blog.csdn.net/libraryhu/article/details/50821791rnhttps://github.com/dqmmpb/rsa-demornhttps://github.com/travist/jsencrypt    ->     issuernrnrn首先
RSA加密 -- 选择padding模式需要注意的问题
点击打开原文链接 RSA - 原理、特点(加解密及签名验签)及公钥和私钥的生成nnRSA加密常用的填充方式有下面3种:nn1、RSA_PKCS1_PADDING 填充模式(最常用的模式)nn输入:必须 比 RSA 钥模长(modulus) 短至少11个字节, 也就是 RSA_size(rsa) – 11n如果输入的明文过长,必须切割, 然后填充nn输出:和modulus一样长nn根据这...
RSA java加密测试
RSA加密测试,代码好像有问题运行不了,哪位懂java的大牛研究研究。
小程序RSA加密,兼容长字符串加密
用于解决普通小程序RSA加密不行,字符串超长的情况,切兼容正常的加密,注使用不用二次base64,与wx_rsa.js使用区别就是 // encStr= encrypt_rsa.encrypt(JSON.stringify(dataValue)); // encStr = RSA.hex2b64(encStr); 而此, encrypt_rsa2.encryptLong(JSON.stringify(dataValue));就行,其他步骤是一样的
androidRSA加密,java解密出现错误或者乱码
后台是java,我是做android的,这是前提。rn前两天遇到一个问题,项目要求一些敏感数据用公钥加密之后传过去,或者是后台传过来的数据用公钥解密。rn然后就遇到问题了rn首先是我解密出现乱码,而且乱码很奇葩,解析出来的密文后面是正确的,前面附加了一段乱码rn然后后台解析我传过去的密文也出现了问题,直接解析错误。rn网上找了很久没找到,问别人,有个哥们告诉我是编码的问题,就是他:上海-零度  
iOS 【在 RSA 加密中遇到的一些坑 - 安卓/iOS 所需私钥不同】
在 RSA 加密中遇到的一些坑 - 安卓/iOS 所需私钥不同。
兼容IE浏览器的前端RSA加密js
用于兼容IE浏览器使用RSA加密的工具类,直接引入,并且使用new ecrypt()即可使用,官网的js会倒是IE浏览器报错SCRIPT1010错误,原因为逗号(,)关键字(default,delete)等。
Crypto++库实现AES和RSA加密解密
本文介绍使用Crypto++进行AES加密和RSA加密nCrypto++库在VS中配置方法nCrypto++库下载地址:nhttps://www.cryptopp.com/,n目前已经更新到8.1版本。本文使用的是8.1版本的Crypto++。n下载压缩包后解压,然后用vs中编译cryptopp。生成debug和Realease版本的cryptlib.lib静态库。在使用时只要包含相应功能的头文件...
微信企业支付RSA加密报错
在微信企业支付的“转账到银行卡”接口中,卡号和姓名需要通过rsa加密传输,但是在开发过程中,加密一直报错,是因为Java开发的rsa加密的jar包问题,nn两个jar包:local_policy.jar 和 US_export_policy.jar 替换掉原来jdk安装目录%JAVA_HOME%\jre\lib\security 下的两个jar包接可以了nn nnjar的下载地址:nnhttps:...
C# RSA加密解密及RSA签名和验证
using System; nusing System.Text; nusing System.Security.Cryptography;nnamespace DotNet.Utilitiesn{ n /// n /// RSA加密解密及RSA签名和验证n /// n public class RSACryption n { n public RSACryption() n {
RSA加密和解密
如前面《RSA算法原理》里描述,RSA算法的加解密操作本质上来讲就是大数的模幂运算,RSA算法的安全性很大程度上取决于填充方式,因此在一个安全的RSA加密操作需要选择一个合适的填充模式,最常见的加密填充模式有RSA_PKCS_V15和RSA_PKCS_V21(OAEP),下面还是以mbedtls里的RSA加密源码为例做进一步分析。nn一、RSA加密nnn/*n * Add the message ...
关于Android 使用服务器公钥RSA加密 数据到服务器RSA解密报错问题
找了一下午的资料...被各种坑之后确定是这个问题...特此记录一下 rn是因为Android的Cipher 与服务器java的Cipher 不一致rn把Cipher 设置成与服务器一致rn//Cipher cipher = Cipher.getInstance("RSA");rnrnCipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding")
RSA前台js加密后台Java解密
RSA前台使用js加密,后台使用Java解密时遇到解密字节超过128byte,但是代码经过多次检查没有发现错误,错误有可能是:n观察前台传递过来的密文,和前台加密后,没有传递的密文对比,你会发现,两个的长度不一样,他们不一样的原因是:nmiyao1 = miyao1.replaceAll(&quot;%2F&quot;,&quot;/&quot;);nmiyao1 = miyao1.replaceAll(&quot;%2B&quot;,&quot;+&quot;);nmiya...
Python使用pycrypto进行RSA长字符串加密
Python RSA 长字符串加密标签(空格分隔): 未分类n 今天有位群友在 “Python那点事” 群里问到了一个使用 pycrypto 进行rsa报错的问题。n问题使用 pycrypto 进行 rsa 加密解密,padding模式是 RSA_PKCS1_PADDING, 加密比较短的字符串没问题,加密长的字符串就报错。 raise ValueError("Plaintext is to
RSA非对称加密解,分段加密解密
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据...
RSA加密算法遇到长中文字符串分解的问题
RSA算法是目前最安全的算法,因为RSA算法的密钥不需要进行网络传输,所以同一密钥在很长一段时间内不改变也不会被破解。因为RSA的安全性,也常常作为其他性能比较高的算法(如DES,亲测,对同一串DES算法解密速度是RSA算法解密速度的100倍)的密钥交换算法。项目中由于业务量增长到了一定程度了,也涉及到一些敏感的数据,所以需要采取一定的安全措施了。n每次数据传输都生成公钥私钥还是只生成一次公钥和
Node.js 使用RSA加密/解密
node-rsann标签(空格分隔): 未分类nnn 第一次使用,不喜勿喷。有什么好的建议请联系博主邮箱 15517072173@163.comnnnnn详细内容请查看node-rsa官方文档nnn纯粹的JavaScript n不需要OpenSSL n生成密钥 n支持加密/解密的长消息n签署和验证nnnnnExamplennnnvar NodeRSA = require('node-rsa');...
前端进行Rsa加密
RSAnRSA加密拥有公钥与密钥,其中密钥是根据公钥来决定的。n对称性加密是采用了对称密码编码,算法是加密与解密使用了相同的密钥加密,RSA公钥与私钥是不同的,是非对称性加密算法。n公钥与密钥的生成方法nMacnMac一般自带openssl,没有先进行安装。n$ sudo apt-get install opensslnn1.新建一文件夹用来存放公钥私钥n2.进入文件夹,生成私钥n$ openss...
android RSA和Java RSA加密不一致的坑
最近项目采用RSA进行加密,遇到了坑,记录一下1、BASE64Decoder在Android中是不存在的,需用Base64替换,nBASE64Decoder base64Decoder= new BASE64Decoder();nbyte[] buffer= base64Decoder.decodeBuffer(privateKeyStr);n替换为:nbyte[] buffer= Base64.d
.Net RSA长文件加密
在使用RSA加密时,如果密钥长度小于需要加密的文件长度会报错,这里给出一个长文件RSA加密的方法,请大家尝试并验证,谢谢!
AES、DES、RSA等加密出现解密失败原因
AES、DES、RSA等加密出现解密失败原因n我们在用微信支付或者其他第三方接口用对称或者非对称加密时经常会遇到明明公钥私钥都正确,可是第三方服务端还是返回解密失败n解密错误原因n1.本地字符串编码和加密后字节编码不对应,java中String类的getBytes方法如下n public byte[] getBytes() {n return StringCoding.encode(v...
Java利用RSA进行前台加密然后后台解密案例
进行加密首先要获取公钥和私钥,本次采用的是公钥进行加密,私钥进行解密,所以首先我把公钥放入session中,然后再前台获取session中的公钥给需要加密的字段进行加密,后台session保存私钥,然后用来解密的。下面是我的案列:nn前台页面:nnnn后台:nnnn辅助工具类(参考网上的)RSAUtil.javannnpackage com.lyh.util;nnimport java.secur...
Windows10下配置OpenSSL,并进行RSA加密
OpenSSL安装流程:rnrnrn1、下载资源:rnhttps://www.openssl.org/source/rn(试过很多版本,1.1.0,1.0.2等,最后还是只有0.9.8a成功了,以下也是基于0.9.8a实现的)rnrnrn2、安装activestate软件:rnhttp://www.activestate.com/activeperl/downloads/rnrnrn3、打开命令行
解密被RSA加密过的string类型JSON字符串并将其保存进XML文件(已解决解密时的长度问题)
using Newtonsoft.Json;//必须导入rnusing System;rnusing System.Collections;rnusing System.Collections.Generic;rnusing System.IO;rnusing System.Linq;rnusing System.Security.Cryptography;rnusing System.Text;
微信小程序RSA非对称加密。
因公司做的产品为金融项目,所以对数据安全性有很高要求,因为项目中的数据都会通过3DES 对称加密,和RSA非对称加密进行数据传输。nn在这里先简单介绍一下什么是对称加密和非对称加密nn对称加密:对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密。nn非对称加密:对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。(...
java 与 php 做rsa 加密数据通讯问题处理
php需要解决的核心问题:rn1,密钥的解密处理 包括私钥跟公钥,java对于密钥的加密有2种,pkcs8 跟 x509rnpkcs8 算法需要额外的库支持 phpseclib 该库依赖 MATH_BIGINTEGER 如果下载1.几版本可手动调整支持php7rn2,签名的加密算法 php 默认应该是rsa模式 如果使用需要java配合。rn详情见:https://schneimi.wordpre
关于Android解密后端RSA加密的Base64字符串
关于Android解密后端RSA加密的Base64字符串后端前端(Android App)关于RSA的补充参考n后端n后端的操作步骤:nn后端提供了私钥给前端,假设为final String PRIVATE_KEY = “EFAASOAmldEJWeqHnfaDjH1T”;n数据先使用公钥通过RSA加密,然后再使用base64转换为字符串;n通过openSSL传送给前端;nn前端(Android ...
RSA js 加密 java解密--很全很详细
公司最近让在登录首页登录时,js加密,java解密。做完之后,记录下来,一起分享首先必不可少的就是jar包,和js文件jar 包 bcprov-jdk16-146.jar 和commons-codec-1.2.jarjs:jquery.min.js和security.js网盘下载地址:链接:https://pan.baidu.com/s/1BlJ8IAFSRNXwPxDk421aNA密码:29a9...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 跪求人工智能编程培训 学习中遇到过哪些大数据