运行该rsaKeygen()
函数时,它生成的键始终是 length 19
,增加p
和q
生成范围的大小会导致程序挂起。代码:
function rsaKeygen()
p = math.random(50000,100000)
while not isprime(p) do
p = math.random(1,1000)
end
q = math.random(1,1000)
while not isprime(q) do
q = math.random(50000,100000)
end
local n = p*q
totientN = carmichael(n)
e = 2^16+1
local d = 1%totientN/e
p,q,totientN = nil,nil,nil
return e,d,n
end
我尝试增加p
和的范围q
,但这会导致程序挂起,并且在我的pkcs1_v1_5_pad(message,key_size)
函数中,19
对于任何合理大小的明文来说,这不是一个足够长的密钥。 PKCS功能:
function pkcs1_v1_5_pad(message,key_size)
print(key_size)
local block_size = key_size/8
local message_length = #message
local padding_length = block_size - message_length - 3
if padding_length < 0 then
error("Message is too long for the given key size")
end
local padding = string.rep("\x00",padding_length)
local padded_message = string.char(0x00)..string.char(0x02)..padding..string.char(0x00)..message
return padded_message
end