一.背景 最近工作中涉及到RSA加密的相关需求任务,之前对加密算法了解不多,开发过程中遇到了一些坑记录一下. 二.RSA原理 RSA加密是非对称加密,公开私钥,保留私钥.通信时数据通过公开的公钥加密,接收方用私钥解密,达到安全传输的目的.RSA算法原理在这就不详述了,放个链接              https://blog.csdn.net/raalghul/article/details/51883354 三.JAVA实现 公钥和私钥 都是由 两个数的组合构成,这样储存不太方便. 用bas…
原文地址:http://songjianyong.iteye.com/blog/1571029 /** * AESHelper.java * cn.com.songjy.test * * Function: TODO * * ver date author * ────────────────────────────────── * 2012-6-29 songjianyong * * Copyright (c) 2012, TNT All Rights Reserved. */ package…
一.问题说明 今天写AES加/解密功能的apk,设想是四个控件(测试用的,界面丑这种东西请忽略) 一个编缉框----用于输入要加密的字符串 一个文本框----用于输出加密后的字符串,和加密后点击解密按钮时解密后的字符串 一个加密按钮----点击后进行加密 一个解密按钮----点击后进行解密 界面如下: 点击加密没有问题,但再点击解密的时候一直报错:“W/System.err: javax.crypto.IllegalBlockSizeException: error:1e00007b:Ciphe…
报错的意思的是使用该种解密方式出入长度应为16bit的倍数,但实际的错误却不是这个,错误原因根本上是因为在http请求是特殊字符编码错误,具体就是base64生成的+号,服务器接收时成了空格,然后导致base64解码出的字节数组有改变. 下面来还原并分析一下具体原因: 请求代码: @Test public void testHttp() throws Exception { //16进制字节数组,单纯的为了生成含有+的base64位字符串,是在试了好多遍都没试到+,只能把我错误例子的byte数组…
Exception in thread "main" javax.crypto.BadPaddingException: Decryption error    at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:380)    at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:291)    at com.sun.crypto.provider.RSACipher.do…
错误信息: java.lang.NoClassDefFoundError: javax/crypto/SunJCE_b at javax.crypto.KeyGenerator.a(DashoA13*..) at javax.crypto.KeyGenerator.<init>(DashoA13*..) at javax.crypto.KeyGenerator.getInstance(DashoA13*..) at org.hexun.wangchong.admin.filters.Sercu…
org.apache.shiro.crypto.CryptoException: Unable to execute 'doFinal' with cipher instance [javax.crypto.Cipher@4e025e0a]. at org.apache.shiro.crypto.JcaCipherService.crypt(JcaCipherService.java:462) at org.apache.shiro.crypto.JcaCipherService.crypt(J…
1     AES算法 1.1    算法描述 1.1.1      设计思想 Rijndael密码的设计力求满足以下3条标准: ① 抵抗所有已知的攻击. ② 在多个平台上速度快,编码紧凑. ③ 设计简单. 当前的大多数分组密码,其轮函数是Feistel结构. Rijndael没有这种结构. Rijndael轮函数是由3个不同的可逆均匀变换 1.1.2      密码说明 严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换),因为Rijndael加密法可以支持更大…
MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明文是yanzi1225627,得到MD5加密后的字符串是:14F2AE15259E2C276A095E7394DA0CA9  但不能由后面一大串倒推出yanzi1225627.因此可以用来存储用户输入的密码在服务器上.现在下载文件校验文件是否中途被篡改也是用的它,原理参见:http://blog.c…
今天调查了C# RSA和Java RSA,网上很多人说,C#加密或者java加密 ,Java不能解密或者C#不能解密 但是我尝试了一下,发现是可以的,下面就是我尝试的代码,如果您有什么问题,我想看看,他们为什么不能互通? package rsa; import java.math.BigInteger; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.PublicKey;…