批量乘以64位以上的数字

时间:2016-01-21 23:06:52

标签: batch-file encryption

我正在创建一个加密程序,它的工作方式是,每个字符都被指定的数字替换,然后添加到完整的字符串中。然后将选择使用密码对其进行加密。然后,密码也使用一组给定的数字进行翻译。然后两个字符串将成倍增加。可以想象,整个消息很容易导致超过64位的数字。我需要一种方法来获得答案,然后将该数字放入文本文件中,最好不必手动执行任何其他操作。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以在http://www.robvanderwoude.com/files/multiply_3rdparty_bat.txt使用此神奇的批处理文件。

文件的标准输出应该是任何乘法问题的答案,您可以使用 for 命令检索,如下所示:

for /f %%A in ('multiply.cmd !key! !message!') do set ciphertext=%%A

但是,在这个大小的数字上,进行正常的算术运算是不安全的。它应该被视为一个字符串。

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
SET "anum=333333333333333334"
SET "bnum=3"
CALL :longmult cnum anum bnum
ECHO %anum% * %bnum%=%cnum%
GOTO :EOF

:longmult
SETLOCAL ENABLEDELAYEDEXPANSION
SET "$=!%2!"
SET "$0=0"
FOR /l %%x IN (1,1,9) DO CALL :longadd $%%x $!$0! $&SET "$0=%%x"
SET "$0=0"
SET "$="
SET "$$=!%3!"
SET "$$$="
:mloop
CALL :longaddvr $ !$%$$:~-1%!%$$$% $
SET "$$$=%$$$%0"
SET "$$=%$$:~0,-1%
IF DEFINED $$ GOTO mloop
endlocal&SET "%1=%$%"
GOTO :eof

:: Longadd reference to reference
:longadd
SETLOCAL ENABLEDELAYEDEXPANSION
SET "p3=!%3!"
SET "p2=!%2!"
:: Have values to be added in P2,P3
:longacomm
SET "$="
SET /a $carry=0
:addloop
IF DEFINED p2 IF DEFINED p3 (
 SET /a $carry=$carry+%p2:~-1%+%p3:~-1%
 SET "p2=%p2:~0,-1%"
 SET "p3=%p3:~0,-1%"
 SET "$=!$carry:~-1!%$%"
 SET /a $carry/=10
 GOTO addloop
)
IF %$carry%==1 (
 IF NOT DEFINED p2 SET /a p2=0
 IF NOT DEFINED p3 SET /a p3=0
 GOTO addloop
)
SET "$=%p2%%p3%%$%"
endlocal&SET "%1=%$%"
GOTO :eof

:: Longadd value to reference
:longaddvr
SETLOCAL ENABLEDELAYEDEXPANSION
SET "p3=!%3!"
SET "p2=%~2"
GOTO longacomm

这是一个将两个变量的值相乘得到第三个的例程。

它如何运作我将作为一个练习留给那些感兴趣的人。