RSA加密案例
public class EcosystemAction extends BaseAction{
private static Logger logger = Logger.getLogger(EcosystemAction.class);
private static final long serialVersionUID = 1L;
//加密密钥
private static String privateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIOQecuF0/5OcP8615TDHlgOa+CB SSUM3R8qvHgA3gFkT7lzV6MYbST11Pf/xJ0vS4ka7rqvt+w7+qResi+ww2oKfFnnANlXJZhpAZoF RrM6MWsBipt7VwCFaW1E9XkJRsnCzCyJsykt6HerQFKcPOay1PMWOowKfYPZ1bsGKlalAgMBAAEC gYBLa82GkQfAp7M7fb4Md/azQEEziKon5UH2FgfJO6YJYjoZ9DdvNheLsqoOKb/K5EwHIztsJkPn 11KOXAMGN+0tzfDyOWnDYem1TXVMv/4hAUhWfsyfwemdRRBNDyhwkcnT/H++wl8ULyl3tcGc792D ukkZesIfwOyIS5uB5Fr4wQJBANgEvbzXbTA+A7LG9Qa60SLzRrgV/RBVv/1Eca9HOYL8hpXh1GyU PTYyXtQJiN3ol2kXdth/biGWCgHlTO9bWR0CQQCb6i24xx55pVBVLkTatnMtZ/sb/DnompXIhotE a8JuvQZBrCpISAwEz2JsR9F13eLWsBc38RfrhNC4a1DwoYUpAkB1dE5+SVwTKQT1xfwghp+EM2a2 XS5WHWngmcB+n2mD8S50fG/2AbwupcCt5elHT1pUR+/U06TcGiqi0Ty9wJt5AkBR/lA3KTgEnwRl F2UMZACkM1eiOv21Ln5wqxjYTZc9p1h/9utxgboYWXuYGBi2VI7zej1rpPWAXSNqqL0zHq4pAkEA vubjdgB6tigP8OdtJ8wYrXFtyQD8eqU0n+GJwBiq3XCB+tWWBdSn66TfjtWC9J7JfUGocLdhd6E7GV+r4s2opg==";
public String doDefault(){
HttpServletRequest request = getRequest();
String skipurl = request.getParameter("url");
RoleService roleService = (RoleService) getService(RoleService.class);
//UM账号
String um = getString(Constants.ADMIN_UID, getSession());
String userid = getString(Constants.ADMIN_USER_ID,getSession());
//姓名
String xm = getString(Constants.ADMIN_USER_NAME, getSession());
//session有效期
int sessionDeadline = 120;
//登录时间
long timestamp = System.currentTimeMillis();
//菜单权限
List role = roleService.findRoleByUserId(userid);
UserInfo userInfo = new UserInfo(um, xm, sessionDeadline, timestamp, role);
String param = new Gson().toJson(userInfo);
try {
//私钥加密
byte[] encryStrbyte = RSAUtils.encryptByPrivateKey(param.getBytes(), privateKey);
String encryStr = RSAUtils.encryptBASE64(encryStrbyte);
//签名
String sign = URLEncoder.encode(RSAUtils.sign(encryStrbyte, privateKey),"UTF-8");
//参数
String reqparam = URLEncoder.encode(encryStr, "UTF-8");
logger.info(reqparam);
getResponse().sendRedirect(skipurl+"?reqparam="+reqparam+"&sign="+sign);
} catch (Exception e) {
logger.info("参数加密失败");
e.printStackTrace();
}
return null;
}
public static String getString(String name, HttpSession session)
{
Object value = session.getAttribute(name);
if (value == null)
{
return "";
}
return value.toString().trim();
}
}
RSA加解密大致过程:
加密:由密钥对参数的二进制进行加密,同时根据二进制数据生成签名,然后进一步对二进制数据进行BASE64加密。
解密:获取参数,对参数进行BASE64解密,由签名对应的密钥对解密后的数据进行验证,验证通过后再经对应的密钥去解密数据。
密钥可由RSAUtis自动生成一对公钥和私钥,工具类见jar包
附件jar是自己写的过滤器,用来解密及存取参。demo自己研究,就是一个使用的过程,其中工具类做了转位操作,为防止参数过长加解密失败
相关推荐
只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战。 RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想...
RSA加密解密C#实现调用实例 public string RSAEncrypt(string xmlPublicKey, string m_strEncryptString) { try { byte[] PlainTextBArray; byte[] CypherTextBArray; string Result; System.Security....
* RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。 * RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。 * RSA加密解密:私钥...
用PowerBuilder实现RSA加密算法
RSA加密算法在VBRSA加密算法在VBRSA加密算法在VB
QT上RSA加密算法实现,附带图形界面,更加直观
RSA加密解密算法源码,功能齐全,没有密码,使用方便,学习用.
unity工具类RSA加密和解密
RSA加密算法的实现,使用c++语言编程,使用dev c++平台编码,文件为cpp格式。经过反复测试代码正确,可搭配RSA讲解教程一起使用,讲解教程点击我的个人主页即可查看,希望能够对你有帮助,谢谢。
RSA加密演算法是一种非对称加密演算法。在公开密钥加密和电子商业中RSA被广泛使用。 典型的应用 1. 苹果App签名, iOS App 签名的原理; 2. 支付宝签名验证 ; 2. HTTPS 加密连接; 3. 程序直接用RSA+AES加密通信 ...
RSA加密算法,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。...加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开...本资源是通过Android、java实现的RSA加密的例子,可供大家参考学习。
由于项目需求,需要对一些重要信息进行RSA加密再传给服务器,网上找了挺久相关内容,终于解决,总结一下。 前端使用jsencrypt进行RSA加密解密(uniapp也可用) 一、引入jsencrypt.js文件 jsencrypt.js下载:...
C#做的RSA加密解密, 带winform界面, 测试通过, 代码完整。
RSA加密解密算法 C++ 密码学 RSA加密解密算法 C++ 密码学 RSA加密解密算法 C++ 密码学
RSA加密算法实验报告.pdf
易语言调用JSEncrypt实现RSA加密解密。Tags:JSEncryptRSA加密解密。
可实用的RSA加密算法(PB12.5源码含Demo).zip
IOS RSA加密 分段解密
RSA加密算法.ppt
rsa加密解密算法C语言代码 #include #include #include <stdlib.h> #include <time.h> #include #include #define MAX 100 #define LEN sizeof(struct slink) void sub(int a[MAX],int b[MAX] ,int c[MAX] ); ...