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

坡头网站开发公司wordpress时光轴主题

坡头网站开发公司,wordpress时光轴主题,中山大沥网站制作,做二手的网站都有哪些#x1f4da; 对称加密算法解析#xff1a;DES、AES及其在pycryptodome 和 crypto-js 模块中的应用 #x1f5dd;️ DES 算法 算法原理 数据加密标准#xff08;DES#xff09;是一种对称密钥加密算法#xff0c;用于保护数据的安全。DES 使用一个 56 位的密钥进行加密… 对称加密算法解析DES、AES及其在pycryptodome 和 crypto-js 模块中的应用 ️ DES 算法 算法原理 数据加密标准DES是一种对称密钥加密算法用于保护数据的安全。DES 使用一个 56 位的密钥进行加密和解密将数据块分为 64 位的块进行处理。DES 是一种 Feistel 网络每个数据块经过 16 轮的处理其中包括置换和替换操作以实现加密。 主要原理 密钥调度将 64 位的密钥压缩成 56 位并通过循环左移生成 16 个子密钥。初始置换IP对输入数据块进行初始置换。轮函数每一轮包含扩展置换、S-盒替换、P-盒置换和异或操作。逆初始置换IP-1在所有轮处理完后对数据进行逆初始置换得到最终的密文。 Python 实现 使用 pycryptodome 库来实现 DES 加密和解密 from Crypto.Cipher import DES from Crypto.Util.Padding import pad, unpaddef des_encrypt_decrypt(data, key, mode):cipher DES.new(key, DES.MODE_ECB)if mode encrypt:# 填充数据至 DES 块大小padded_data pad(data.encode(utf-8), DES.block_size)encrypted_data cipher.encrypt(padded_data)return encrypted_dataelif mode decrypt:decrypted_data cipher.decrypt(data)unpadded_data unpad(decrypted_data, DES.block_size)return unpadded_data.decode(utf-8)else:raise ValueError(Invalid mode. Choose encrypt or decrypt.)# 示例 key b8bytekey # 8 字节的密钥 data Hello, DES! encrypted des_encrypt_decrypt(data, key, encrypt) decrypted des_encrypt_decrypt(encrypted, key, decrypt)print(Encrypted:, encrypted) print(Decrypted:, decrypted)输入输出示例: 输入: Hello, DES!, 密钥: b8bytekey输出: 加密结果: b\x9d\xc2\xa5\x16\x19\x1c\xf3\x8f解密结果: Hello, DES! JavaScript 实现使用 crypto-js 模块 const CryptoJS require(crypto-js);function desEncryptDecrypt(data, key, mode) {const keyHex CryptoJS.enc.Utf8.parse(key);if (mode encrypt) {const encrypted CryptoJS.DES.encrypt(data, keyHex, { mode: CryptoJS.mode.ECB });return encrypted.toString();} else if (mode decrypt) {const decrypted CryptoJS.DES.decrypt(data, keyHex, { mode: CryptoJS.mode.ECB });return decrypted.toString(CryptoJS.enc.Utf8);} else {throw new Error(Invalid mode. Choose encrypt or decrypt.);} }// 示例 const key 8bytekey; // 8 字节的密钥 const data Hello, DES!; const encrypted desEncryptDecrypt(data, key, encrypt); const decrypted desEncryptDecrypt(encrypted, key, decrypt);console.log(Encrypted:, encrypted); console.log(Decrypted:, decrypted);输入输出示例: 输入: Hello, DES!, 密钥: 8bytekey输出: 加密结果: 3B3d4a...bcd5 (加密的密文)解密结果: Hello, DES! AES 算法 算法原理 高级加密标准AES是对称密钥加密标准用于替代 DES。AES 支持 128 位、192 位和 256 位密钥长度并处理 128 位的块。AES 采用 10、12 或 14 轮的处理取决于密钥的长度。 主要原理 密钥扩展从原始密钥生成多个轮密钥。轮函数每轮包含字节替换SubBytes、行移位ShiftRows、列混淆MixColumns和轮密钥加AddRoundKey操作。最终轮不包括列混淆操作。 Python 实现 使用 pycryptodome 库来实现 AES 加密和解密 from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad import osdef aes_encrypt_decrypt(data, key, mode):cipher AES.new(key, AES.MODE_ECB)if mode encrypt:# 填充数据至 AES 块大小padded_data pad(data.encode(utf-8), AES.block_size)encrypted_data cipher.encrypt(padded_data)return encrypted_dataelif mode decrypt:decrypted_data cipher.decrypt(data)unpadded_data unpad(decrypted_data, AES.block_size)return unpadded_data.decode(utf-8)else:raise ValueError(Invalid mode. Choose encrypt or decrypt.)# 示例 key os.urandom(16) # 16 字节的密钥 data Hello, AES! encrypted aes_encrypt_decrypt(data, key, encrypt) decrypted aes_encrypt_decrypt(encrypted, key, decrypt)print(Encrypted:, encrypted) print(Decrypted:, decrypted)输入输出示例: 输入: Hello, AES!, 密钥: b...key... (随机生成)输出: 加密结果: b\x1f\x23\xfe...78解密结果: Hello, AES! JavaScript 实现使用 crypto-js 模块 const CryptoJS require(crypto-js);function aesEncryptDecrypt(data, key, mode) {const keyHex CryptoJS.enc.Hex.parse(key);if (mode encrypt) {const encrypted CryptoJS.AES.encrypt(data, keyHex, { mode: CryptoJS.mode.ECB });return encrypted.toString();} else if (mode decrypt) {const decrypted CryptoJS.AES.decrypt(data, keyHex, { mode: CryptoJS.mode.ECB });return decrypted.toString(CryptoJS.enc.Utf8);} else {throw new Error(Invalid mode. Choose encrypt or decrypt.);} }// 示例 const key CryptoJS.enc.Hex.parse(00112233445566778899aabbccddeeff); // 16 字节密钥 const data Hello, AES!; const encrypted aesEncryptDecrypt(data, key, encrypt); const decrypted aesEncryptDecrypt(encrypted, key, decrypt);console.log(Encrypted:, encrypted); console.log(Decrypted:, decrypted);输入输出示例: 输入: Hello, AES!, 密钥: 00112233445566778899aabbccddeeff输出: 加密结果: U2FsdGVkX1...7w (加密的密文)解密结果: Hello, AES! ️ 拓展用法 1. 加盐仅适用于 DES 和 AES Python 实现: from Crypto.Random import get_random_bytesdef aes_encrypt_with_salt(data, key, salt):key_with_salt key saltcipher AES.new(key_with_salt[:16], AES.MODE_ECB)padded_data pad(data.encode(utf-8), AES.block_size)encrypted_data cipher.encrypt(padded_data)return encrypted_data# 示例 key get_random_bytes(16) salt get_random_bytes(8) data Hello, AES with Salt! encrypted aes_encrypt_with_salt(data, key, salt)print(Encrypted with Salt:, encrypted)输入输出示例: 输入: Hello, AES with Salt!, 密钥: b... (随机生成), 盐值: b... (随机生成)输出: 加密结果: b\x12\x34\x56\x78...ef (加密的密文) 2. 哈希化密钥密钥衍生 Python 实现: from Crypto.Protocol.KDF import scryptdef derive_key(password, salt):return scrypt(password.encode(utf-8), salt, 16, N2**14, r8, p1)# 示例 password mysecretpassword salt get_random_bytes(16) derived_key derive_key(password, salt) print(Derived Key:, derived_key)**输入 输出示例**: 输入: 密码: mysecretpassword, 盐值: b... (随机生成)输出: 派生密钥: b... (派生的密钥) 3. 修改加密算法参数如填充方式 Python 实现: from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpaddef aes_encrypt_with_custom_padding(data, key, padding_length):cipher AES.new(key, AES.MODE_ECB)padded_data data.encode(utf-8) bytes([padding_length] * padding_length)encrypted_data cipher.encrypt(padded_data)return encrypted_data# 示例 key get_random_bytes(16) data Hello, Custom Padding! encrypted aes_encrypt_with_custom_padding(data, key, 16)print(Encrypted with Custom Padding:, encrypted)输入输出示例: 输入: Hello, Custom Padding!, 密钥: b... (随机生成), 填充长度: 16输出: 加密结果: b... (加密的密文) 4. 密钥扩展从较短密钥生成较长密钥 Python 实现: from Crypto.Hash import SHA256def extend_key(short_key):return SHA256.new(short_key).digest()# 示例 short_key bshortkey extended_key extend_key(short_key) print(Extended Key:, extended_key)输入输出示例: 输入: 短密钥: bshortkey输出: 扩展密钥: b... (扩展后的密钥) 5. 加密的哈希化加密后哈希化 Python 实现: from Crypto.Hash import SHA256def hash_after_encryption(encrypted_data):hash_object SHA256.new(dataencrypted_data)return hash_object.hexdigest()# 示例 data Hello, Hash after Encryption! encrypted aes_encrypt_decrypt(data, key, encrypt) hashed hash_after_encryption(encrypted)print(Hashed Encrypted Data:, hashed)输入输出示例: 输入: Hello, Hash after Encryption!, 加密数据: b...输出: 哈希值: d2d2d2d2d2...d2d2 以上示例展示了 DES 和 AES 对称加密算法的基本使用方法以及如何在 Python 和 JavaScript 中实现这些算法。此外还涵盖了一些拓展用法例如加盐、密钥衍生、修改加密算法参数等。这些方法为实际应用中的加密需求提供了丰富的解决方案。
http://www.hkea.cn/news/14527082/

相关文章:

  • 网站域名个人备案跟企业备案做住宿网站挣钱吗
  • 淄博网站优化价格wordpress增加用户组
  • wix网站制作电子商务网站建设与管理习题答案
  • wordpress换站腾讯官方网站建设
  • 单页网站模板修改吗seo百度站长工具
  • 建站网站官方あかねさす少女免费
  • 厦门免费自助建站模板网站上传不了图片不显示不出来吗
  • 网站下方一般放什么原因网站企业制作
  • 怎样上传网站百度站长平台快速收录怎么弄
  • 商城网站建设咨询php做的网站好不好
  • 成都网站开发培训广告联盟上怎么做网站
  • 丹阳网站优化加盟手机网站源码
  • 品牌型网站开发wordpress钉钉
  • 企业网站营销优缺点厦门网站建设制作
  • eclipse做网站代码重庆 手工 制作
  • 企石镇网站建设公司代理公司收费标准
  • 西安专业网络推广公司深圳seo网站推广报价
  • 个人网站做哪种能赚钱公司网站建设属于什么职位
  • 建设门户网站系统的必要性微信开放平台怎么注销账号
  • 太原网站建设-中国互联辽宁建设工程招标网
  • 唐山做网站企业2023年互联网创业项目
  • 深圳市招聘信息网站包装设计软件
  • 网站建设yingkagouhtml5用什么软件
  • 商务网站建设实践实训心得网站建设的运营计划书
  • 证券投资网站建设沈阳网站排名seo
  • 做瞹免费视频网站wordpress 页脚
  • 西宁网站建设费用应用商店aso
  • Ul设计网站仙游县建设局网站
  • wap建设网站怎么推广外贸网站
  • 网站上的图片格式怎么做重庆永川建设银行网站