1
これは、正しい方法でpgpキーからアルゴリズム固有の値を抽出するでしょうか?私はその後、例えば私のプログラムpgpアルゴリズム固有のデータ抽出
def algorithm(data, pka):
#data is a large binary string with the algorithm specific values,
#along with the rest of the data
# MPI is defined as: 2 byte showing how many bits the value is + the value
if pka in [pub[1], pub[2], pub[3]]: # the 3 different RSA values/types
'''MPI of RSA public modulus n'''
# I havent actually used this part of the code yet
length = int(data[:16], 2) # get the length of the value in bits
n = int(data[16:16 + length], 2) # get the value
data = data[16 + length:] # remove the MPI from the data
'''MPI of RSA public modulus e'''
length = int(data[:16], 2)
e = int(data[16:16 + length], 2)
data = data[16 + length:]
temp = [n, e]
elif pka == 'DSA':
'''MPI of DSA prime p'''
length = int(data[:16], 2)
p = int(data[16:16 + length], 2)
data = data[16 + length:]
'''MPI of DSA group order q (q is a prime divisor of p-1)'''
length = int(data[:16], 2)
q = int(data[16:16 + length], 2)
data = data[16 + length:]
'''MPI of DSA group generator g'''
length = int(data[:16], 2)
g = int(data[16:16 + length], 2)
data = data[16 + length:]
'''MPI of DSA public-key value y (= g**x mod p where x is secret)'''
length = int(data[:16], 2)
y = int(data[16:16 + length], 2)
data = data[16 + length:]
temp = [p, q, g, y]
elif pka == 'Elgamal (Encrypt-Only)':
'''MPI of Elgamal prime p'''
length = int(data[:16], 2)
p = int(data[16:16 + length], 2)
data = data[16 + length:]
'''MPI of Elgamal group generator g'''
length = int(data[:16], 2)
g = int(data[16:16 + length], 2)
data = data[16 + length:]
'''MPI of Elgamal public key value y (= g**x mod p where x
is secret)'''
length = int(data[:16], 2)
y = int(data[16:16 + length], 2)
data = data[16 + length:]
temp = [p, g, y]
return data, temp
の残りの部分を台無しにDSAとElGamalのためのすべてが、最後の値を適切に抽出することができる奇妙な問題を、持っている:私は、データをどこかにオンラインからもらった鍵を持っています(pgpdump.netからダンプ)ビーイング:
Old: Public Subkey Packet(tag 14)(525 bytes) Ver 4 - new Public key creation time - Sat Oct 24 20:28:43 UTC 1998 Pub alg - ElGamal Encrypt-Only(pub 16) ElGamal p(2048 bits) - ... ElGamal g(2 bits) - ... ElGamal y(2044 bits) - ...
私は私のプログラムの残りの部分を台無しY、以外のすべてを得るでしょう。私はバイナリデータを見ると、プログラムが間違ってそれを読んでいないので、私はどこにプログラミングがうまくいかないのか分からない。