Vigenère cipher: Difference between revisions

→‎{{header|D}}: less compact but faster
(Modified D version)
(→‎{{header|D}}: less compact but faster)
Line 318:
<lang d>import std.stdio, std.string;
 
string encrypt(string texttxt, in string key) {
string encodedres;
foreach (i, c; texttxt.toupper().removechars("^A-Z")) {
encoded ~=if (c + key[i % $] - 2 *< 'A') %|| 26c +> 'AZ') continue;
res ~= (c + key[res.length % $] - 2 * 'A') % 26 + 'A';
return encoded;
}
return encodedres;
}
 
string decrypt(string encodedtxt, in string key) {
string decodedres;
foreach (i, c; encodedtxt.toupper().removechars("^A-Z")) {
decoded ~=if (c -< key[i'A' %|| $]c +> 26'Z') % 26 + 'A'continue;
res ~= (c - key[res.length % $] + 26) % 26 + 'A';
return decoded;
}
return decodedres;
}
 
Anonymous user