代码之家  ›  专栏  ›  技术社区  ›  Baczek

python m2crypto-生成DSA密钥对并分离公共/私有组件

  •  2
  • Baczek  · 技术社区  · 17 年前

    有人能解释一下造成以下情况的原因吗?

    >>> from M2Crypto import DSA, BIO
    >>> dsa = DSA.gen_params(1024)
    ..+........+++++++++++++++++++++++++++++++++++++++++++++++++++*
    ............+.+.+..+.........+.............+.....................+.
    ...+.............+...........+.........................................
    +.........+................+..........+......+..+.+...+..........+..+..
    ..+...+......+....+.............+.................+.......+.........+..
    ....+......+.+..+..........+........+.+...+..+...............+.........
    ..+.....+........+..........+++++++++++++++++++++++++++++++++++++++++++
    ++++++++*
    >>> mem = BIO.MemoryBuffer()
    >>> dsa.save_key_bio(mem, cipher=None)
    1
    >>> dsa.save_pub_key_bio(mem)
    0
    >>> print mem.getvalue()
    -----BEGIN DSA PRIVATE KEY-----
    MIIBIgIBAAKBgQDPGRFSTqqx8vet5kaW5m99A83REotTcX9HOv+zrqMxQpaTlinS
    MDz49I4psDPJ+bWH7vySEdOYO2JGUj6kYZdz/ZwyNjphWNjQkaUrmfaVLzS3PHpW
    aMrPEweLesf/PT4KXm2HaDbaW/g2Ds5h+Zlq9LDKcN2vfvyeiTCmf1esyQIVAO9I
    ippU4PIdvJVO9HQRkqrD2bxPAoGBAIwVgM7dgNVwihJva6qeeh7ypy3ESNB9k8nY
    fOnES+SqZGQbkPrJIusRCJNKERiMATJXNRMfBeWD8htNRezbgtr0OpuYSBurAQjp
    hKKVI3DHSv7XT49BQ3tdJww8lQfkOhHOfFTG6U1dJhWdggp0WN3EjYlt77agRsjR
    4t5sD1f3
    -----END DSA PRIVATE KEY-----
    -----BEGIN PUBLIC KEY-----
    -----END PUBLIC KEY-----
    >>>
    

    很明显我错过了什么。M2Crypto不存在的文档没有帮助。

    1 回复  |  直到 16 年前
        1
  •  7
  •   Ali Afshar    17 年前

    调用dsa.gen_key(),然后保存。您实际上没有生成公钥。

    >>> from M2Crypto import DSA, BIO
    >>> dsa = DSA.gen_params(1024)
    ..+..etc
    >>> mem = BIO.MemoryBuffer()
    >>> dsa.gen_key()
    >>> dsa.save_key_bio(mem, cipher=None)
    1
    >>> dsa.save_pub_key_bio(mem)
    1
    >>> print mem.getvalue()
    -----BEGIN DSA PRIVATE KEY-----
    MIIBuwIBAAKBgQDowiLFDXGwaWIOkZybeeqSXYZ8KCLmXg5XfnAtDBlVOokB91Rj
    etc.
    -----END DSA PRIVATE KEY-----
    -----BEGIN PUBLIC KEY-----
    MIIBtzCCASsGByqGSM44BAEwggEeAoGBAOjCIsUNcbBpYg6RnJt56pJdhnwoIuZe
    Dld+cC0MGVU6iQH3VGNEzKycBVQeVYke3itZwQALSlT2JfUsmOjeZYIkc9l2YYob
    rixObXfQyc0AOBM/J53F0F6R8+xvEwN/Hmdd9SjjbdZi8gve+dr9UfnKHXi0KPUF
    s2ougGhXeEjTAhUAiW5bMzG8nCVjXErgwaDEx+JEdtECgYACba2quw3xibhT3JNd
    sDh0gIRpHPQgIgxgzGv6A09Vdb4VgtWf0MYAo6gAhxsZIWWKzQ94Oe1nf7OhC+B+
    VjT+PW+ExSrbJVONTN5ycE64O7+2L+q/hZSjjkxXgfcApqeVtZp4wKqbS976Kpch
    WgNl0zdkvV8JddRs0oKQ0Bl7dwOBhQACgYEAgkdF/+ncobVcYXfXHBUH3H5SLD3y
    u2zUWGhXM4/MUTwPromDOQ8Zd0H7myYhmQvVUb+J9mJHMIn7Guf4JDH+8d6rBpzo
    U5yEGqgsSqYqgtStzDvsKHfqw3mvjvsktm66N/vm36eai2I6J15QibdtP0lb1Um8
    EeECDTxWUWT93rs=
    -----END PUBLIC KEY-----
    
    >>>