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

做网站加班多吗/seo网站分析报告

做网站加班多吗,seo网站分析报告,技术博客主题wordpress,天津智能网站建设费用摘要: 项目开发过程中遇到一个棘手的问题:A系统使用java开发,通过AES加密数据,B系统使用C#开发,需要从A系统获取数据,但在AES解密的时候遇到麻烦。Java的代码和C#的代码无法互通。 Java代码: /*…

摘要: 项目开发过程中遇到一个棘手的问题:A系统使用java开发,通过AES加密数据,B系统使用C#开发,需要从A系统获取数据,但在AES解密的时候遇到麻烦。Java的代码和C#的代码无法互通。 Java代码: /** * 加密 * * @param content 需要加密的内...

项目开发过程中遇到一个棘手的问题:A系统使用java开发,通过AES加密数据,B系统使用C#开发,需要从A系统获取数据,但在AES解密的时候遇到麻烦。Java的代码和C#的代码无法互通。

 

Java代码:

 

/** * 加密 *  * @param content 需要加密的内容 * @param password  加密密钥* @return */  public static String encrypt(String content, String password) {  try {            //如下代码用于根据原始的password生成加密的key,这段代码C#是没有对应的实现的KeyGenerator kgen = KeyGenerator.getInstance("AES"); java.security.SecureRandom random = java.security.SecureRandom.getInstance("SHA1PRNG");random.setSeed(password.getBytes()); kgen.init(128, random);  SecretKey secretKey = kgen.generateKey();byte[] enCodeFormat = secretKey.getEncoded();//如下代码是标准的AES加密处理,C#可以实现SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");Cipher cipher = Cipher.getInstance("AES");		  byte[] byteContent = content.getBytes("utf-8");  cipher.init(Cipher.ENCRYPT_MODE, key);			return Codec.encodeBASE64(cipher.doFinal(byteContent));} catch (Exception e) {  Logger.error(e,"AES加密异常");}  return null;} 

网上找了一些资料,没有找到满意的解决方案,于是尝试了一种取巧的方法,具体实现如下:

 

1)将Java中key的处理代码抽取出来,写成一个简单的工具类,类名为TestGenAESByteKey。

      TestGenAESByteKey将原始的password转换为AES加密需要的字节,然后Base64编码,得到字符串

2)将以上步骤得到的字符串通过人工的方式拷贝到C#的代码中,作为秘钥解密

 

具体代码如下:

TestGenAESByteKey(Java语言)

 

package api;import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;import sun.misc.BASE64Encoder;public class TestGenAESByteKey{/*** @param args* @throws UnsupportedEncodingException * @throws NoSuchAlgorithmException */public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException {KeyGenerator kgen = KeyGenerator.getInstance("AES"); java.security.SecureRandom random = java.security.SecureRandom.getInstance("SHA1PRNG");random.setSeed(args[0].getBytes()); kgen.init(128, random);  SecretKey secretKey = kgen.generateKey();byte[] enCodeFormat = secretKey.getEncoded();BASE64Encoder coder = new BASE64Encoder();System.out.println(coder.encode(enCodeFormat));}}

C#的解密代码:

 

public static string decrypt(string toDecrypt,string key){byte[] keyArray = Convert.FromBase64String(key); //将TestGenAESByteKey类输出的字符串转为byte数组byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);RijndaelManaged rDel = new RijndaelManaged();rDel.Key = keyArray;rDel.Mode = CipherMode.ECB;        //必须设置为ECBrDel.Padding = PaddingMode.PKCS7;  //必须设置为PKCS7ICryptoTransform cTransform = rDel.CreateDecryptor();byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);return UTF8Encoding.UTF8.GetString(resultArray);}

 

例如:原始密码为123456,经过TestGenAESByteKey处理后,输出a7SDfrdDKRBe5FaN2n3Gfg==

将a7SDfrdDKRBe5FaN2n3Gfg==作为C#函数decrypt的key参数的值传进去,就可以正常解码了

 

 

需要注意几点:

 

1)C#默认运算模式为CBC,java默认为ECB,因此要将C#的加密方式改为ECB

2)C#的Padding方式要设置为PaddingMode.PKCS7,否则解密出来后结尾可能有乱码

转载于:https://www.cnblogs.com/amylis_chen/p/6107162.html

http://www.lbrq.cn/news/1361287.html

相关文章:

  • 重庆手机网站推广报价/企业网站推广
  • 客户网站建设完成后需要什么/深圳知名网络优化公司
  • 建站小程序快速上线/黑帽seo365t技术
  • 蒙自做网站的公司/实时热搜榜
  • 做围棋题网站/semikron
  • 四川南充网站建设/2023年广州疫情最新消息
  • 福州建站价格/成都营销推广公司
  • 沙特政府建设部网站/冯宗耀seo教程
  • 定制网站和模板网站的区别/怎么制作个人网页
  • 网站备案和备案的区别/网络推广app是违法的吗
  • 免费的域名网址/电商seo什么意思
  • 无锡做企业网站的公司/山东公司网站推广优化
  • 数字广东网络建设有限公司地址/seo网络推广知识
  • 网站首屏/哪个推广网站好
  • 网站开发吃香吗/百度网址
  • 重庆市公司网站备案在哪了/网站首页快速收录
  • 深圳网站设计在哪济南兴田德润联系电话/今天最新新闻
  • 做网站开发需要什么技能/seo相关岗位
  • 太原手手工网站建设公司/网络优化培训要多少钱
  • 网站之家查询域名/怎样在百度上发布广告
  • 河源网站优化/sem是什么职位
  • 网站建设项目公司/自媒体账号申请
  • 有哪些网站可以做赌博游戏/独立网站和平台网站
  • 分类信息网站做推广/百度搜索风云榜
  • 广州网站建设 app 小程序/it培训班学出来有用吗
  • 线上推广团队/温州seo排名公司
  • 旅游网站制作/北京seo学校
  • 浙江省建设厅新网站人员无法查询/磁力搜索
  • 二手书网站建设报告/合川网站建设
  • 二级a做爰片免费视网站/网站推广线上推广
  • 8月4日星期一今日早报简报微语报早读
  • 【从零开始学习Redis】初识Redis
  • Fay数字人如何使用GPT-SOVITS进行TTS转换以及遇到的一些问题
  • 信创及一次ORACLE到OB的信创迁移
  • Web 开发 11
  • ulimit参数使用详细总结