The ISAAC cipher: Difference between revisions
Content deleted Content added
added FreeBASIC |
m →{{header|Sidef}}: updated code |
||
Line 3,507: | Line 3,507: | ||
=={{header|Sidef}}== |
=={{header|Sidef}}== |
||
{{trans|Perl}} |
{{trans|Perl}} |
||
<lang ruby>require('Math::Random::ISAAC') |
<lang ruby>require('Math::Random::ISAAC') |
||
func xor_isaac(key, msg) { |
func xor_isaac(key, msg) { |
||
var rng = % |
var rng = %O<Math::Random::ISAAC>.new(unpack('C*', key)) |
||
msg.chars»ord |
msg.chars»ord()» \ |
||
-> »^« 256.of{ rng.irand % 95 + 32 }.last(msg.len). |
-> »^« 256.of{ rng.irand % 95 + 32 }.last(msg.len).flip \ |
||
-> «%« '%02X' -> join |
-> «%« '%02X' -> join |
||
} |
} |
||
var msg = 'a Top Secret secret' |
var msg = 'a Top Secret secret' |
||
var key = 'this is my secret key' |
var key = 'this is my secret key' |
||
var enc = xor_isaac(key, msg) |
var enc = xor_isaac(key, msg) |
||
var dec = xor_isaac(key, pack('H*', enc)) |
var dec = xor_isaac(key, pack('H*', enc)) |
||
say "Message: #{msg}" |
say "Message: #{msg}" |
||
say "Key : #{key}" |
say "Key : #{key}" |
||
say "XOR : #{enc}" |
say "XOR : #{enc}" |
||
say "XOR dcr: #{pack('H*', dec)}" |
say "XOR dcr: #{pack('H*', dec)}"</lang> |
||
{{out}} |
{{out}} |
||
<pre> |
<pre> |