Bifid cipher: Difference between revisions

m
No edit summary
 
(2 intermediate revisions by 2 users not shown)
Line 644:
<syntaxhighlight>
func$ crypt enc msg$ key$ .
key$[] = strchars key$
n = len msg$
for i to len msg$
c$ = substr msg$ i 1
for j to= strpos key$ c$ - 251
if c$ = key$[j]
break 1
.
.
j -= 1
h[] &= j div 5
h[] &= j mod 5
Line 660 ⟶ 654:
for i = 1 step 4 to 2 * n - 3
j = h[i] * 5 + h[i + 2] + 1
r$ &= substr key$[ j] 1
.
for i = 2 step 4 to 2 * n - 2
j = h[i] * 5 + h[i + 2] + 1
r$ &= substr key$[ j] 1
.
else
for i = 1 to n
j = h[i] * 5 + h[i + n] + 1
r$ &= substr key$[ j] 1
.
.
Line 718 ⟶ 712:
=={{header|FutureBasic}}==
<syntaxhighlight lang="futurebasic">
clear local fn recode( ut as CFStringRef, code as CFStringRef ) as CFStringRef
CFStringRef s = @""
Short i, k, w = sqr( len( code ) )
for i = 0 to len( ut ) - 1 step 2
k = intval( mid( ut, i, 2 ) ) // Get ‘coordinates’ of char in code string
k = w * ( k / 10 ) + k mod 10
s = fn StringByAppendingString( s, mid( code, k, 1 ) )
Line 732 ⟶ 726:
//
 
clear local fn encode( ts as CFStringRef, code as CFStringRef ) as CFStringRef
CFStringRef a = @"", b = @"", c
CFMutableStringRef s = fn MutableStringWithString( t )
Short i, k, w = sqr( len( code ) )
if w == 5 then MutableStringReplaceAllOccurrencesOfStrings = fn StringByReplacingOccurrencesOfString( s, @"J", @"I" )
print s
Line 1,987 ⟶ 1,980:
Encrypted : NGiw3okfXj4XoVE_NjWcLK4Sy28EivKo3aeNiti3N3z6HCHno6Fkf
Decrypted : The_invasion_will_start_on_the_first_of_January_2023.</pre>
=={{header|RPL}}==
« DUP SIZE √ "" → in key n out
« { } DUP
1 in SIZE '''FOR''' j
key in j DUP SUB
POS 1 - n MOD LASTARG / IP
SWAP ROT SWAP + ROT ROT + SWAP
'''NEXT'''
+ 'in' STO
1 in SIZE '''FOR''' j
j'out' -=key 1
in j DUP 1 + SUB
OBJ→ DROP SWAP n * + 1 +
DUP SUB STO+
2 '''STEP'''
.out
» » '<span style="color:blue">→BIFCOD</span>' STO
« DUP SIZE √ "" → in key n out
« { }
1 in SIZE '''FOR''' j
key in j DUP SUB POS
1 - n MOD LASTARG break/ IP 1
ROT SWAP + SWAP +
'''NEXT'''
DUP 'in' STO SIZE 2 /
1 OVER '''FOR''' j
'out' key .
in j GET n * in 5 PICK j + GET + 1 +
DUP SUB STO+
'''NEXT'''
DROP out
» » '<span style="color:blue">→BIFDEC</span>' STO
« { "ATTACKATDAWN" "ABCDEFGHIKLMNOPQRSTUVWXYZ"
"FLEEATONCE" "BGWKZQPNDSIOAXEFCLUMTHYVR"
"ATTACKATDAWN" "BGWKZQPNDSIOAXEFCLUMTHYVR"
"THE INVASION WILL START ON THE FIRST OF JANUARY" "ABCDEFGHIJKLMNOPQRSTUVWXYZ 123456789" }
→ examples
« 1 examples SIZE '''FOR''' j
examples j GETI ROT ROT GET
<span style="color:blue">→BIFCOD</span> DUP examples j 1 + GET
<span style="color:blue">→BIFDEC</span> 2 →LIST
2 '''STEP'''
» » '<span style="color:blue">TASK</span>' STO
 
{{out}}
<pre>
4: { "DQBDAXDQPDQH" "ATTACKATDAWN" }
3: { "UAEOLWRINS" "FLEEATONCE" }
2: { "EYFENGIWDILA" "ATTACKATDAWN" }
1: { "TEISTO1HKVCWO1GYIV EGPCZKOJAOI 9MG5OIH 64IRPBM4" "THE INVASION WILL START ON THE FIRST OF JANUARY" }
</pre>
 
=={{header|Ruby}}==
<syntaxhighlight lang="ruby" line>
1,983

edits