国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

網絡營銷策略內容廈門seo俱樂部

網絡營銷策略內容,廈門seo俱樂部,網站如何做的有氣質,網站建設服務的具體條件需要考慮哪些問題? 在進行報文傳輸時,有兩個問題需要考慮: 消息防篡改加密報文 定義消息結構 為了方便后面使用,這里定義消息結構: 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 及其摘要,那么很容易被別人篡改,這時就需要對摘要進行加密,也就是所謂的簽名。也就是防止篡改的核心。下面給出一個完整的實現(xiàn):

這里只放主要流程,輔助方法見附錄:

// 生成RSA密鑰對
KeyPair keyPair = generateKeyPair();// 獲取公鑰和私鑰
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();// 要加密的原始數(shù)據
String originalMessage = "Hello, message encryption!";//發(fā)送端簽名
Message message = sign(originalMessage, privateKey);
System.out.println("加密后的消息簽名: " + message.sign);//接收端校驗簽名
boolean checkResult = checkSign(message, publicKey);
System.out.println("合法:" + checkResult);

對報文進行加密

在發(fā)送端: 首先生成 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();
}// 使用公鑰加密數(shù)據
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);
}// 使用私鑰加密數(shù)據
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);
}// 使用公鑰解密數(shù)據
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);
}// 使用私鑰解密數(shù)據
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密鑰加密數(shù)據
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密鑰解密數(shù)據
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);
}// 將字節(jié)數(shù)組轉換為十六進制字符串
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://m.aloenet.com.cn/news/32010.html

相關文章:

  • 做網站需要什么技術搜索關鍵詞站長工具
  • 高端網站哪個比較好線上產品推廣方案
  • 針對人群不同 網站做細分全球疫情最新數(shù)據
  • 免費空間申請網站網絡營銷在哪里學比較靠譜
  • 網站備案流程圖上海自動seo
  • 2015年做哪個網站能致富建網站用什么工具
  • 旅游搜索網站開發(fā)百度網站推廣怎么做
  • 鎮(zhèn)江做網站哪家公司好靠網絡營銷火起來的企業(yè)
  • 方城網站制作網絡營銷專業(yè)課程
  • 重慶的做網站公司百度風云榜小說榜排名
  • 專業(yè)做網站價格廈門百度關鍵詞優(yōu)化
  • 網站推廣的技巧和方法企業(yè)網站的網絡營銷功能
  • 在什么網站做貿易好最簡短的培訓心得
  • 江蘇建設廳官方網站安全員北京專門做seo
  • 佛山市網站建設保定網站建設方案優(yōu)化
  • 一個域名做多個網站快速seo優(yōu)化
  • 如何做話費卡回收網站開發(fā)網站多少錢
  • 如何增加網站的訪問量手機網站模板免費下載
  • 做網站反復修改今天熱點新聞事件
  • 有哪些做筆譯的網站怎樣下載優(yōu)化大師
  • 濟南網站建設找大標深圳網站seo地址
  • 3合一網站怎么做免費推廣工具有哪些
  • 網站建設與規(guī)劃方向免費外鏈網盤
  • 彩票網站開發(fā)多少錢四川疫情最新情況
  • 棋牌游戲網站怎么做的seo與sem的區(qū)別
  • 做網站的外包能學到什么深圳最新政策消息
  • 網站開發(fā)工作需要什么專業(yè)阿森納英超積分
  • 可以做測試的網站廣州軟文推廣公司
  • 靈犀科技 網站建設深圳廣告公司
  • 百度seo服務蘇州關鍵詞優(yōu)化搜索排名