No_QrGen_V1.html 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>AES CBC Encryption and QR Code Generation</title>
  7. <script src="./crypto-js.min.js"></script>
  8. <script src="./qrcode.min.js"></script>
  9. <style>
  10. html,
  11. body {
  12. width: 100%;
  13. height: 98%;
  14. margin: 0;
  15. padding: 0;
  16. text-align: center;
  17. align-items: center;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <h1>AES CBC Encryption and QR Code Generation</h1>
  23. <input type="text" id="userName" placeholder="User name">
  24. <br>
  25. <input type="text" id="password" placeholder="Password">
  26. <br>
  27. <br>
  28. <button onclick="encryptAndGenerateQR()">Encrypt & Generate QR Code</button>
  29. <br>
  30. <br>
  31. <div style="width: 100%; display: flex; justify-content:center">
  32. <div style="width: 256px; height: 256px; border: 1px solid black; padding: 2%;" id="qrcode"></div>
  33. </div>
  34. <script>
  35. var key = CryptoJS.enc.Utf8.parse("A123061230612306"); // 密钥
  36. var iv = CryptoJS.enc.Utf8.parse("0000000000000000"); // 固定的IV,16个字符0
  37. function encryptAndGenerateQR() {
  38. var plaintext = "u_name@"
  39. + document.getElementById("userName").value
  40. + ";"
  41. + "u_password@"
  42. + document.getElementById("password").value
  43. + ";";
  44. console.log("plaintext: " + plaintext);
  45. while (document.getElementById("qrcode").firstChild) {
  46. document.getElementById("qrcode").removeChild(document.getElementById("qrcode").firstChild);
  47. }
  48. // 加密
  49. var encryptedText = encrypt(plaintext, key, iv);
  50. generateQRCode(encryptedText);
  51. console.log("Encrypted text: " + encryptedText);
  52. // 解密
  53. var decryptedText = decrypt(encryptedText, key, iv);
  54. console.log("Decrypted text: " + decryptedText);
  55. }
  56. function encrypt(plaintext, key, iv) {
  57. var cipherText = CryptoJS.AES.encrypt(plaintext, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
  58. return cipherText.toString();
  59. }
  60. function decrypt(ciphertext, key, iv) {
  61. var decryptedBytes = CryptoJS.AES.decrypt(ciphertext, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
  62. return decryptedBytes.toString(CryptoJS.enc.Utf8);
  63. }
  64. function generateQRCode(data) {
  65. var qr = new QRCode(document.getElementById("qrcode"), {
  66. text: data,
  67. width: 256,
  68. height: 256,
  69. colorDark: "#000000",
  70. colorLight: "#ffffff",
  71. correctLevel: QRCode.CorrectLevel.H
  72. });
  73. }
  74. </script>
  75. </body>
  76. </html>