mirror of
https://github.com/gchq/CyberChef.git
synced 2025-05-03 13:09:15 -04:00
bugfix(rot13): Fix negative number rotation
This commit is contained in:
parent
016825d4de
commit
2e1f746957
1 changed files with 14 additions and 7 deletions
|
@ -62,20 +62,27 @@ class ROT13 extends Operation {
|
|||
chr;
|
||||
|
||||
if (amount) {
|
||||
if (amount < 0) {
|
||||
amount = 26 - (Math.abs(amount) % 26);
|
||||
}
|
||||
|
||||
let amountModified;
|
||||
for (let i = 0; i < input.length; i++) {
|
||||
amountModified = amount;
|
||||
chr = input[i];
|
||||
if (rot13Upperacse && chr >= 65 && chr <= 90) { // Upper case
|
||||
chr = (chr - 65 + amount) % 26;
|
||||
if (amountModified < 0) {
|
||||
amountModified = 26 - (Math.abs(amountModified) % 26);
|
||||
}
|
||||
chr = (chr - 65 + amountModified) % 26;
|
||||
output[i] = chr + 65;
|
||||
} else if (rot13Lowercase && chr >= 97 && chr <= 122) { // Lower case
|
||||
chr = (chr - 97 + amount) % 26;
|
||||
if (amountModified < 0) {
|
||||
amountModified = 26 - (Math.abs(amountModified) % 26);
|
||||
}
|
||||
chr = (chr - 97 + amountModified) % 26;
|
||||
output[i] = chr + 97;
|
||||
} else if (rotNumbers && chr >= 48 && chr <= 57) { // Numbers
|
||||
chr = (chr - 48 + amount) % 10;
|
||||
if (amountModified < 0) {
|
||||
amountModified = 10 - ((Math.abs(amountModified)) % 10);
|
||||
}
|
||||
chr = (chr - 48 + amountModified) % 10;
|
||||
output[i] = chr + 48;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue