The ISAAC cipher: Difference between revisions

Content added Content deleted
(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 = %s<Math::Random::ISAAC>.new(unpack('C*', key));
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).reverse \
-> »^« 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)}";</lang>
say "XOR dcr: #{pack('H*', dec)}"</lang>
{{out}}
{{out}}
<pre>
<pre>