23秋季学期期中考核(密码题)

文章讲述了如何将Node.js中的SM4加密代码转换为Python,涉及SM4算法的使用和解密过程,以及RSA加密中的质因数分解和公钥原理。还提到使用yafu工具进行整数因式分解以处理RSA密钥的特殊情况。
摘要由CSDN通过智能技术生成

师兄新学的Decode姿势 

题目给出的

    const SM4 = require("gm-crypt").sm4;
    var payload =
    "inu7s0XGslLFsPe0xok/nxqwtceG0cuMoh7hBbpwyNBrn3g/lMdcFYobv/K++eRgWwI/TIA4qMtjqpNKOet
    E3TD0gWoSknGF6OhkRJ3LxrNUZ/Mi8ISz3xrDLawIY8NwbalYcQUGWtVjdC3nJLmAAA67FmSCAn2EOcI1mAt
    9yMQ=";
    let sm4Config = {
    key: "B6*40.2_C9#e4$E3",
    mode: "ecb",
    cipherType: "base64"
    };
    let sm4 = new SM4(sm4Config);
    var result = sm4.decrypt(payload);
    console.log("解密:" + result)

 询问后,因为需要node.js环境,就把他转换为python语言 ,这个是借用的

    from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
    from cryptography.hazmat.primitives.padding import PKCS7
    from cryptography.hazmat.backends import default_backend
    import base64
     
    payload = "inu7s0XGslLFsPe0xok/nxqwtceG0cuMoh7hBbpwyNBrn3g/lMdcFYobv/K++eRgWwI/TIA4qMtjqpNKOetE3TD0gWoSknGF6OhkRJ3LxrNUZ/Mi8ISz3xrDLawIY8NwbalYcQUGWtVjdC3nJLmAAA67FmSCAn2EOcI1mAt9yMQ="
    key = b'B6*40.2_C9#e4$E3'
     
    backend = default_backend()
    cipher = Cipher(algorithms.SM4(key), modes.ECB(), backend=backend)
    decryptor = cipher.decryptor()
     
    decoded_payload = base64.b64decode(payload)
    decrypted_data = decryptor.update(decoded_payload) + decryptor.finalize()
     
    unpadder = PKCS7(algorithms.SM4.block_size).unpadder()
    unpadded_data = unpadder.update(decrypted_data) + unpadder.finalize()
     
    print("解密:", unpadded_data.decode())

 运行结果如下

1z_rsa 

看代码 

 简单来说,需要两个质因数p,q满足phi(N) = (p-1)(q-1),那么有N = p * q 。还需要一个定义叫e的质数为公钥,满足gcd(e,phi(N)) = 1(e和phi(N)公约数为1)

 yafu分解m

yafu用于自动整数因式分解,在RSA中,当p、q的取值差异过大或过于相近的时候,使用yafu可以快速的把n值分解出p、q值

1z_AES 

看一下代码,有了密钥和偏移量,可以找一个工具解密一下就可以了 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值