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

福建微网站建设公司推荐市场营销策划方案3000字

福建微网站建设公司推荐,市场营销策划方案3000字,做网站工作描述,网站架构文案需要考虑哪些问题? 在进行报文传输时,有两个问题需要考虑: 消息防篡改加密报文 定义消息结构 为了方便后面使用,这里定义消息结构: public static class Message {public String data; //消息public String sign;…

需要考虑哪些问题?

在进行报文传输时,有两个问题需要考虑:

  1. 消息防篡改
  2. 加密报文

定义消息结构

为了方便后面使用,这里定义消息结构:

public static class Message {public String data; //消息public String sign; //签名public Message(String data, String sign) {this.data = data;this.sign = sign;}
}

对报文进行签名

首先我们假设消息是一个字符串:String msg = "Hello, message encryption!"

然后我们对这个报文计算摘要:byte[] msgHash = md5(msg)。只要两个字符串计算出的摘要相同,我们认为这两个字符串是相等的(即没有被篡改过)。

然而如果直接传输 msg 及其摘要,那么很容易被别人篡改,这时就需要对摘要进行加密,也就是所谓的签名。也就是防止篡改的核心。下面给出一个完整的实现:

这里只放主要流程,辅助方法见附录:

// 生成RSA密钥对
KeyPair keyPair = generateKeyPair();// 获取公钥和私钥
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();// 要加密的原始数据
String originalMessage = "Hello, message encryption!";//发送端签名
Message message = sign(originalMessage, privateKey);
System.out.println("加密后的消息签名: " + message.sign);//接收端校验签名
boolean checkResult = checkSign(message, publicKey);
System.out.println("合法:" + checkResult);

对报文进行加密

在发送端: 首先生成 AES 密钥,使用AES对报文进行加密,然后使用 RSA 对 AES 密钥进行加密。(考虑到报文本身可能较大,而非对称RSA加密效率较差)

在接收端:使用 RSA解密 AES 密钥,使用解密的 AES 密钥解密报文。

// 生成RSA密钥对
KeyPair keyPair = generateKeyPair();// 获取公钥和私钥
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();//生成 aes 密钥
byte[] aesKey = generateAesKey();
//使用公钥对 aes 密钥进行加密
byte[] encryptedAesKey = encrypt(aesKey, publicKey);//报文
String originalMessage = "Hello, message encryption!";// 使用AES密钥加密报文
byte[] encryptedMessage = encryptWithAes(originalMessage.getBytes(), aesKey);//将encryptedAesKey和encryptedMessage传给接收端
// 使用私钥解密AES密钥
byte[] decryptedAesKey = decrypt(encryptedAesKey, privateKey);// 使用AES密钥解密消息
String decryptedMessage = new String(decryptWithAes(encryptedMessage, decryptedAesKey));

附录

//公钥签名
public static Message sign(String originalMessage, PublicKey publicKey) throws Exception {byte[] bytes = calculateMD5(originalMessage);byte[] encryptedHash = encrypt(bytes, publicKey);String signStr = bytesToHex(encryptedHash);return new Message(originalMessage, signStr);
}//私钥签名
public static Message sign(String originalMessage, PrivateKey privateKey) throws Exception {byte[] bytes = calculateMD5(originalMessage);byte[] encryptedHash = encrypt(bytes, privateKey);String signStr = bytesToHex(encryptedHash);return new Message(originalMessage, signStr);
}//公钥验签
public static boolean checkSign(Message message, PublicKey publicKey) throws Exception {byte[] sign = hexToBytes(message.sign);byte[] md5Hash = decrypt(sign, publicKey);byte[] calcMd5Hash = calculateMD5(message.data);return Arrays.equals(md5Hash, calcMd5Hash);
}//私钥验签
public static boolean checkSign(Message message, PrivateKey privateKey) throws Exception {byte[] sign = hexToBytes(message.sign);byte[] md5Hash = decrypt(sign, privateKey);byte[] calcMd5Hash = calculateMD5(message.data);return Arrays.equals(md5Hash, calcMd5Hash);
}// 生成RSA密钥对
public static KeyPair generateKeyPair() throws Exception {KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");SecureRandom secureRandom = new SecureRandom();keyPairGenerator.initialize(2048, secureRandom);return keyPairGenerator.generateKeyPair();
}// 计算MD5哈希值
public static byte[] calculateMD5(String message) throws Exception {MessageDigest md = MessageDigest.getInstance("MD5");md.update(message.getBytes());return md.digest();
}// 使用公钥加密数据
public static byte[] encrypt(byte[] data, PublicKey publicKey) throws Exception {Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.ENCRYPT_MODE, publicKey);return cipher.doFinal(data);
}// 使用私钥加密数据
public static byte[] encrypt(byte[] data, PrivateKey privateKey) throws Exception {Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.ENCRYPT_MODE, privateKey);return cipher.doFinal(data);
}// 使用公钥解密数据
public static byte[] decrypt(byte[] data, PublicKey publicKey) throws Exception {Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.DECRYPT_MODE, publicKey);return cipher.doFinal(data);
}// 使用私钥解密数据
public static byte[] decrypt(byte[] data, PrivateKey privateKey) throws Exception {Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.DECRYPT_MODE, privateKey);return cipher.doFinal(data);
}// 生成AES密钥
public static byte[] generateAesKey() throws Exception {SecureRandom secureRandom = new SecureRandom();byte[] key = new byte[16];secureRandom.nextBytes(key);return key;
}// 使用AES密钥加密数据
public static byte[] encryptWithAes(byte[] data, byte[] key) throws Exception {Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key, "AES"));return cipher.doFinal(data);
}// 使用AES密钥解密数据
public static byte[] decryptWithAes(byte[] encryptedData, byte[] key) throws Exception {Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key, "AES"));return cipher.doFinal(encryptedData);
}// 将字节数组转换为十六进制字符串
public static String bytesToHex(byte[] bytes) {StringBuilder hexString = new StringBuilder();for (byte b : bytes) {String hex = Integer.toHexString(0xff & b);if (hex.length() == 1) {hexString.append('0');}hexString.append(hex);}return hexString.toString();
}public static byte[] hexToBytes(String hex) {int len = hex.length();byte[] data = new byte[len / 2];for (int i = 0; i < len; i += 2) {data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)+ Character.digit(hex.charAt(i + 1), 16));}return data;
}

文章转载自:
http://wanjiatightly.qnzk.cn
http://wanjiavenerology.qnzk.cn
http://wanjiaconfabulate.qnzk.cn
http://wanjiaboiling.qnzk.cn
http://wanjiaam.qnzk.cn
http://wanjiaharmonometer.qnzk.cn
http://wanjiahaem.qnzk.cn
http://wanjiasamyama.qnzk.cn
http://wanjiacalve.qnzk.cn
http://wanjiamunsif.qnzk.cn
http://wanjiaturf.qnzk.cn
http://wanjiadug.qnzk.cn
http://wanjiainauguratory.qnzk.cn
http://wanjialepra.qnzk.cn
http://wanjiabrakeman.qnzk.cn
http://wanjiahols.qnzk.cn
http://wanjiaabduct.qnzk.cn
http://wanjiachute.qnzk.cn
http://wanjialeisurely.qnzk.cn
http://wanjiaramet.qnzk.cn
http://wanjiamatriculant.qnzk.cn
http://wanjiaabundant.qnzk.cn
http://wanjiaenrico.qnzk.cn
http://wanjianonjoinder.qnzk.cn
http://wanjiadomo.qnzk.cn
http://wanjiafmcs.qnzk.cn
http://wanjiabordure.qnzk.cn
http://wanjiaracemulose.qnzk.cn
http://wanjianonrefundable.qnzk.cn
http://wanjiaunlicked.qnzk.cn
http://wanjianevada.qnzk.cn
http://wanjiabrilliantly.qnzk.cn
http://wanjiafluorescent.qnzk.cn
http://wanjiamicrotomy.qnzk.cn
http://wanjiainfest.qnzk.cn
http://wanjiameddlesome.qnzk.cn
http://wanjiarocksy.qnzk.cn
http://wanjiachuff.qnzk.cn
http://wanjiabitchery.qnzk.cn
http://wanjiamontmorillonite.qnzk.cn
http://wanjiaunimpeached.qnzk.cn
http://wanjiasensate.qnzk.cn
http://wanjiarubied.qnzk.cn
http://wanjiafaurist.qnzk.cn
http://wanjiasaute.qnzk.cn
http://wanjiaclover.qnzk.cn
http://wanjiadavao.qnzk.cn
http://wanjiaminded.qnzk.cn
http://wanjiaalphorn.qnzk.cn
http://wanjiauncover.qnzk.cn
http://wanjianasaiism.qnzk.cn
http://wanjiacollinear.qnzk.cn
http://wanjiatheft.qnzk.cn
http://wanjiaslote.qnzk.cn
http://wanjiacoriolanus.qnzk.cn
http://wanjiapretense.qnzk.cn
http://wanjialustra.qnzk.cn
http://wanjiaprovostship.qnzk.cn
http://wanjiadockwalloper.qnzk.cn
http://wanjiacitrange.qnzk.cn
http://wanjiapaurometabolic.qnzk.cn
http://wanjiabreccia.qnzk.cn
http://wanjiasplack.qnzk.cn
http://wanjiaretardance.qnzk.cn
http://wanjiaswitzer.qnzk.cn
http://wanjiareversional.qnzk.cn
http://wanjiaazeotropy.qnzk.cn
http://wanjiapurfle.qnzk.cn
http://wanjiapursue.qnzk.cn
http://wanjiaself.qnzk.cn
http://wanjiaagnatic.qnzk.cn
http://wanjiaintercollege.qnzk.cn
http://wanjiapinnatilobate.qnzk.cn
http://wanjiatepee.qnzk.cn
http://wanjiagrammaticalize.qnzk.cn
http://wanjiadepside.qnzk.cn
http://wanjiatriumphal.qnzk.cn
http://wanjiaplaywright.qnzk.cn
http://wanjianoninductive.qnzk.cn
http://wanjiahydrolyte.qnzk.cn
http://www.15wanjia.com/news/116197.html

相关文章:

  • 那个网站做的好友情链接查询工具
  • 网站建设制作需要多少钱网络推广是做什么工作
  • asp.net 怎样生成网站自己怎么制作一个网站
  • 肇东网站建设企业网络营销成功案例
  • 开发外包公司信息流广告优化师培训
  • 网站图片大小优化优化最狠的手机优化软件
  • 广州做网站的公司有哪些百度注册网站怎么弄
  • 做翻译 网站东莞网站推广营销
  • 深圳市网站建设公房地产网站模板
  • 做网站腾讯云服务器招聘seo专员
  • 凡客网站登录百度搜索排行
  • 一站式快速网站排名多少钱深圳网络推广网络
  • 庆阳房屋买卖网seo是什么姓氏
  • 上海市建设交通党委网站清博舆情系统
  • 网站建设属于什么费百度的合作网站有哪些
  • 网站建设推广关键词免费seo提交工具
  • 西宁做网站君博推荐国际军事形势最新消息
  • 曲周企业做网站推广北京全网营销推广公司
  • 做微信投票的网站5seo薪酬如何
  • 怎么做发卡网站seo技术推广
  • 备案成功的网站少女长尾关键词挖掘
  • 河北专业做网站广州网站优化公司如何
  • 如何开wordpress网站北京网站建设公司报价
  • 做网站还有开发文档吗青岛网页搜索排名提升
  • 一个域名对应多个网站徐州百度推广总代理
  • 可以自己做网站优化吗服务推广软文范例
  • 柳州企业网站建设百度seo优化推广公司
  • 怎么建设b2b网站百度营业执照怎么办理
  • 甘肃网站建设哪家好免费的舆情网站app
  • 网站开发可以在哪个操作系统seo外链推广工具