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;
|
chr;
|
||||||
|
|
||||||
if (amount) {
|
if (amount) {
|
||||||
if (amount < 0) {
|
let amountModified;
|
||||||
amount = 26 - (Math.abs(amount) % 26);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < input.length; i++) {
|
for (let i = 0; i < input.length; i++) {
|
||||||
|
amountModified = amount;
|
||||||
chr = input[i];
|
chr = input[i];
|
||||||
if (rot13Upperacse && chr >= 65 && chr <= 90) { // Upper case
|
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;
|
output[i] = chr + 65;
|
||||||
} else if (rot13Lowercase && chr >= 97 && chr <= 122) { // Lower case
|
} 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;
|
output[i] = chr + 97;
|
||||||
} else if (rotNumbers && chr >= 48 && chr <= 57) { // Numbers
|
} 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;
|
output[i] = chr + 48;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue