For $i = 1 To 25
ConsoleWrite(_cipher_Rot(@SystemDir & '\calc.exe', $i, False) & @CRLF)
Next
ConsoleWrite(_cipher_Rot(@SystemDir & '\calc.exe', 47, False) & @CRLF)
Func _cipher_Rot($sData, $iRotType = 13, $bDecode = True)
If Not StringLen($sData) Then Return SetError(1, 0, "")
Local $aStr = StringToASCIIArray($sData)
If @error Then Return SetError(2, 0, "")
$iRotType = Int($iRotType)
Switch $iRotType
Case 1 To 4, 6 To 12, 14 To 17, 19 To 25
For $idat = 0 To UBound($aStr) - 1
If Not $bDecode Then
Switch $aStr[$idat]
Case 65 To 90
$aStr[$idat] += $iRotType
If $aStr[$idat] > 90 Then
$aStr[$idat] = ($aStr[$idat] - 90) + 64
EndIf
Case 97 To 122
$aStr[$idat] += $iRotType
If $aStr[$idat] > 122 Then
$aStr[$idat] = ($aStr[$idat] - 122) + 96
EndIf
EndSwitch
Else
Switch $aStr[$idat]
Case 65 To 90
$aStr[$idat] -= $iRotType
If $aStr[$idat] < 65 Then
$aStr[$idat] = 91 - (65 - $aStr[$idat])
EndIf
Case 97 To 122
$aStr[$idat] -= $iRotType
If $aStr[$idat] < 97 Then
$aStr[$idat] = 123 - (97 - $aStr[$idat])
EndIf
EndSwitch
EndIf
Next
Case 5
For $idat = 0 To UBound($aStr) - 1
Switch $aStr[$idat]
Case 48 To 52
$aStr[$idat] += 5
Case 53 To 57
$aStr[$idat] -= 5
EndSwitch
Next
Case 13
For $idat = 0 To UBound($aStr) - 1
Switch $aStr[$idat]
Case 65 To 90
$aStr[$idat] = (($aStr[$idat] + $iRotType) < 91 ? $aStr[$idat] + $iRotType : $aStr[$idat] - $iRotType)
Case 97 To 122
$aStr[$idat] = (($aStr[$idat] + $iRotType) < 123 ? $aStr[$idat] + $iRotType : $aStr[$idat] - $iRotType)
EndSwitch
Next
Case 18
$iRotType = 13
For $idat = 0 To UBound($aStr) - 1
Switch $aStr[$idat]
Case 48 To 52
$aStr[$idat] += 5
Case 53 To 57
$aStr[$idat] -= 5
Case 65 To 90
$aStr[$idat] = (($aStr[$idat] + $iRotType) < 91 ? $aStr[$idat] + $iRotType : $aStr[$idat] - $iRotType)
Case 97 To 122
$aStr[$idat] = (($aStr[$idat] + $iRotType) < 123 ? $aStr[$idat] + $iRotType : $aStr[$idat] - $iRotType)
EndSwitch
Next
Case 47
For $idat = 0 To UBound($aStr) - 1
If ($aStr[$idat] > 32 And $aStr[$idat] < 127) Then
$aStr[$idat] = (($aStr[$idat] + $iRotType < 127) ? $aStr[$idat] + $iRotType : $aStr[$idat] - $iRotType)
EndIf
Next
Case Else
Return SetError(3, 0, "")
EndSwitch
Return StringFromASCIIArray($aStr)
EndFunc