Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
92
Task/RSA-code/V-(Vlang)/rsa-code.v
Normal file
92
Task/RSA-code/V-(Vlang)/rsa-code.v
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
/*import math.big
|
||||
fn main() {
|
||||
//var bb, ptn, etn, dtn big.Int
|
||||
pt := "Rosetta Code"
|
||||
println("Plain text: $pt")
|
||||
|
||||
// a key set big enough to hold 16 bytes of plain text in
|
||||
// a single block (to simplify the example) and also big enough
|
||||
// to demonstrate efficiency of modular exponentiation.
|
||||
n := big.integer_from_string("9516311845790656153499716760847001433441357")?
|
||||
e := big.integer_from_string("65537")?
|
||||
d := big.integer_from_string("5617843187844953170308463622230283376298685")?
|
||||
|
||||
mut ptn := big.zero_int
|
||||
// convert plain text to a number
|
||||
for b in pt.bytes() {
|
||||
bb := big.integer_from_i64(i64(b))
|
||||
ptn = ptn.lshift(8).bitwise_or(bb)
|
||||
}
|
||||
if ptn >= n {
|
||||
println("Plain text message too long")
|
||||
return
|
||||
}
|
||||
println("Plain text as a number:$ptn")
|
||||
|
||||
// encode a single number
|
||||
etn := ptn.big_mod_pow(e,n)
|
||||
println("Encoded: $etn")
|
||||
|
||||
// decode a single number
|
||||
mut dtn := etn.big_mod_pow(d,n)
|
||||
println("Decoded: $dtn")
|
||||
|
||||
// convert number to text
|
||||
mut db := [16]u8{}
|
||||
mut dx := 16
|
||||
bff := big.integer_from_int(0xff)
|
||||
for dtn.bit_len() > 0 {
|
||||
dx--
|
||||
bb := dtn.bitwise_and(bff)
|
||||
db[dx] = u8(i64(bb.int()))
|
||||
dtn = dtn.rshift(8)
|
||||
println('${db[0..].bytestr()} ${dtn.bit_len()}')
|
||||
}
|
||||
println("Decoded number as text: ${db[dx..].bytestr()}")
|
||||
}*/
|
||||
|
||||
import math.big
|
||||
fn main() {
|
||||
//var bb, ptn, etn, dtn big.Int
|
||||
pt := "Hello World"
|
||||
println("Plain text: $pt")
|
||||
|
||||
// a key set big enough to hold 16 bytes of plain text in
|
||||
// a single block (to simplify the example) and also big enough
|
||||
// to demonstrate efficiency of modular exponentiation.
|
||||
n := big.integer_from_string("9516311845790656153499716760847001433441357")?
|
||||
e := big.integer_from_string("65537")?
|
||||
d := big.integer_from_string("5617843187844953170308463622230283376298685")?
|
||||
|
||||
mut ptn := big.zero_int
|
||||
// convert plain text to a number
|
||||
for b in pt.bytes() {
|
||||
bb := big.integer_from_i64(i64(b))
|
||||
ptn = ptn.lshift(8).bitwise_or(bb)
|
||||
}
|
||||
if ptn >= n {
|
||||
println("Plain text message too long")
|
||||
return
|
||||
}
|
||||
println("Plain text as a number:$ptn")
|
||||
|
||||
// encode a single number
|
||||
etn := ptn.big_mod_pow(e,n)
|
||||
println("Encoded: $etn")
|
||||
|
||||
// decode a single number
|
||||
mut dtn := etn.big_mod_pow(d,n)
|
||||
println("Decoded: $dtn")
|
||||
|
||||
// convert number to text
|
||||
mut db := [16]u8{}
|
||||
mut dx := 16
|
||||
bff := big.integer_from_int(0xff)
|
||||
for dtn.bit_len() > 0 {
|
||||
dx--
|
||||
bb := dtn.bitwise_and(bff)
|
||||
db[dx] = u8(i64(bb.int()))
|
||||
dtn = dtn.rshift(8)
|
||||
}
|
||||
println("Decoded number as text: ${db[dx..].bytestr()}")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue