Jump to content

RSA code: Difference between revisions

1,028 bytes added ,  6 years ago
Added Kotlin
(Adding C#)
(Added Kotlin)
Line 589:
 
Note: as indicated at http://www.jsoftware.com/help/dictionary/special.htm, <code>N&|@^</code> does not bother with creating the exponential intermediate result.
 
=={{header|Kotlin}}==
<lang scala>// version 1.1.4-3
 
import java.math.BigInteger
 
fun main(args: Array<String>) {
val n = BigInteger("9516311845790656153499716760847001433441357")
val e = BigInteger("65537")
val d = BigInteger("5617843187844953170308463622230283376298685")
val c = Charsets.UTF_8
val plainText = "Rosetta Code"
println("PlainText : $plainText")
val bytes = plainText.toByteArray(c)
val plainNum = BigInteger(bytes)
println("As number : $plainNum")
if (plainNum > n) {
println("Plaintext is too long")
return
}
 
val enc = plainNum.modPow(e, n)
println("Encoded : $enc")
 
val dec = enc.modPow(d, n)
println("Decoded : $dec")
val decText = dec.toByteArray().toString(c)
println("As text : $decText")
}</lang>
 
{{out}}
<pre>
PlainText : Rosetta Code
As number : 25512506514985639724585018469
Encoded : 916709442744356653386978770799029131264344
Decoded : 25512506514985639724585018469
As text : Rosetta Code
</pre>
 
=={{header|Mathematica}}==
9,485

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.