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