Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
45
Task/RSA-code/Sidef/rsa-code.sidef
Normal file
45
Task/RSA-code/Sidef/rsa-code.sidef
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
const n = 9516311845790656153499716760847001433441357
|
||||
const e = 65537
|
||||
const d = 5617843187844953170308463622230283376298685
|
||||
|
||||
module Message {
|
||||
var alphabet = [('A' .. 'Z')..., ' ']
|
||||
var rad = alphabet.len
|
||||
var code = Hash(^rad -> map {|i| (alphabet[i], i) }...)
|
||||
func encode(String t) {
|
||||
[code{t.reverse.chars...}] ~Z* t.len.range.map { |i| rad**i } -> sum(0)
|
||||
}
|
||||
func decode(Number n) {
|
||||
''.join(alphabet[
|
||||
gather {
|
||||
loop {
|
||||
var (d, m) = n.divmod(rad)
|
||||
take(m)
|
||||
break if (n < rad)
|
||||
n = d
|
||||
}
|
||||
}...]
|
||||
).reverse
|
||||
}
|
||||
}
|
||||
|
||||
var secret_message = "ROSETTA CODE"
|
||||
say "Secret message is #{secret_message}"
|
||||
|
||||
var numeric_message = Message::encode(secret_message)
|
||||
say "Secret message in integer form is #{numeric_message}"
|
||||
|
||||
var numeric_cipher = expmod(numeric_message, e, n)
|
||||
say "After exponentiation with public exponent we get: #{numeric_cipher}"
|
||||
|
||||
var text_cipher = Message::decode(numeric_cipher)
|
||||
say "This turns into the string #{text_cipher}"
|
||||
|
||||
var numeric_cipher2 = Message::encode(text_cipher)
|
||||
say "If we re-encode it in integer form we get #{numeric_cipher2}"
|
||||
|
||||
var numeric_message2 = expmod(numeric_cipher2, d, n)
|
||||
say "After exponentiation with SECRET exponent we get: #{numeric_message2}"
|
||||
|
||||
var secret_message2 = Message::decode(numeric_message2)
|
||||
say "This turns into the string #{secret_message2}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue