bits = 0800
mlen = div($bits, 08)
prilen = div($mlen, 02)
bytelen = div( $bits, 10 )
bytelen = hex2int( $bytelen)
for i = 0 to 128
? "软算法产生密钥对"
sRsaKey = new_rsa_gencrt($bits, 00010001)
n[ int(0x$i) ] = mid($sRsaKey, expr10( $bytelen * 0 ), int(0x$mlen))
d[ int(0x$i) ] = mid($sRsaKey, expr10( $bytelen * 2 ), int(0x$mlen))
p[ int(0x$i) ] = mid($sRsaKey, expr10( $bytelen * 4 ), int(0x$prilen))
q[ int(0x$i) ] = mid($sRsaKey, expr10( $bytelen * 5 ), int(0x$prilen))
dp[ int(0x$i) ] = mid($sRsaKey, expr10( $bytelen * 6 ), int(0x$prilen))
dq[ int(0x$i) ] = mid($sRsaKey, expr10( $bytelen * 7 ), int(0x$prilen))
qinv[ int(0x$i) ] = mid($sRsaKey, expr10( $bytelen * 8 ), int(0x$prilen))
priKey[ int(0x$i) ] = $d[int(0x$i)] $p[int(0x$i)] $q[int(0x$i)] $dp[int(0x$i)] $dq[int(0x$i)] $qinv[int(0x$i)]
? "软算法验证正确性"
srcdata = hrandom($mlen)
srcdata = memand( $srcdata, 00, 7f )
encdata = new_rsa_pub_encrypt($bits, 00010001, $n[int(0x$i)], $srcdata)
decdata1 = new_rsa_std_decrypt($bits, $n[int(0x$i)], $d[int(0x$i)], $encdata)
if $decdata1 != $srcdata
?
pause
endif
decdata2 = new_rsa_crt_decrypt($bits, $p[int(0x$i)], $q[int(0x$i)], $dp[int(0x$i)], $dq[int(0x$i)], $qinv[int(0x$i)], $encdata)
if $decdata2 != $srcdata
?
pause
endif
next i