- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 adobe type 1 字体加密算法来加密文本文件。但是,我不知道如何用汇编语言正确地实现算法。如果可以,请帮助我。
下面是adobe type 1字体加密算法:
unsigned short int r;
unsigned short int c1 =52845;
unsigned short int c2 = 22719;
unsigned char eencrypt(char plain) unsigned char plain;
{ unsigned char cipher;
cipher = (plain ^ (r >> 8));
r = (cipher + r) * c1 + c2;
return cipher;
}
这是我的代码:
.model tiny
.data
filename db "file.txt", 0
bufferSize = 512
filehandle dw ?
buffer db bufferSize dup (0)
r dw 0
c1 dw 52845
c2 dw 22719
cipher dw ?
message1 db 'Cannot open file. $'
message2 db 'Cannot read file. $'
message3 db 'Cannot close file. $'
.code
org 100h
start:
call open
call read
call close
call Exit
;procedures
open:
mov ah,3DH
mov al,0
mov dx, offset filename
int 21h
jc openErr
mov filehandle, ax
ret
read: ;reads file
mov ah, 3Fh
mov bx, filehandle
mov cx, bufferSize
mov dx, offset buffer
int 21h
cmp ax,0
jc readErr
;displays content of file
call clear
mov ah, 9
mov dx, offset buffer
int 21h
ret
close:
mov ah, 3Eh
mov bx, filehandle
int 21h
jc closeErr
ret
encrypt:
; need loop to loop through each char, don't know how to do that
mov ax, [r]
shr ax, 8
mov bl, [buffer]
xor bh,bh
xor bx, ax
mov cipher, bx
mov dx, cipher
add dx, [r] ;get error: extra characters on line
imul dx, c1
add dx, c2
mov [r], dx
;decrypt:
clear: ;clears the screen
mov ax,003h
int 10h
ret
Exit:
mov ax, 4C00h
int 21h
newline: ;prints a newline
mov ah, 2
mov dl, 0DH
int 21h
mov dl, 0AH
int 21h
ret
;error messages
openErr :
call newline
lea DX,message1 ;set up pointer to error message
mov AH,9 ;display string function
int 21H ;DOS call
stc ;set error flag
ret
readErr :
call newline
lea DX,message2 ;set up pointer to error message
mov AH,9 ;display string function
int 21H ;DOS call
stc ;set error flag
ret
closeErr :
call newline
lea DX,message3 ;set up pointer to error message
mov AH,9 ;display string function
int 21H ;DOS call
stc ;set error flag
ret
结束开始
最佳答案
;encrypt:
; need loop to loop through each char, don't know how to do that
;mov ax, r
;shr ax, 8 r>>8
;mov bl, buffer bl = buffer
buffer
是符号地址,不是缓冲区中的值。使用 mov bl,[buffer]
从内存中读取值。如果你想遍历完整的缓冲区内容,请将该地址放入某个寄存器,si
通常因为保留指向数据源的指针而受到青睐(因为它在 lods
指令中被硬编码,并且“s”可能被读作“源”)。如果你是 C++ 编译器,你不关心,你选择任何你有的备用寄存器,而不考虑它的名字。
;xor bx, ax bx = buffer ^(r>>8)
bh
没有设置,可能是任何东西,破坏你的计算。要么做xor bx,bx
在加载 bl
之前来自缓冲区,或 xor bh,bh
清除 bh
仅(在现代 x86 上速度稍慢,因为它必须将 bh
+ bl
组合成 bx
),或使用 movzx bx,byte ptr [buffer]
在上一步中将 char 值零扩展为 word 值。
;mov cipher, bx cipher = buffer^(r>>8)
标签 cipher
在 db ?
之前定义, 但在这里你要将两个字节写入内存,所以它也会覆盖 message1
的第一个字节。字符串。我强烈建议使用 []
每次你写入内存时,即使 TASM/MASM 允许这种语法,但我发现它很难阅读(看到 [cipher]
会让我的大脑自动想到“内存访问”,即使快速浏览源代码)。
;mov cx, c1
c1
和 c2
可以是EQU
, 因此它们将作为中间值直接编译成代码。
;add cx, c2
这不是 C 加密的作用(乘法优先于加法)。
;mov dx, cipher
您再次对待 cipher
作为单词,这是有道理的,但它反对 db ?
(因此 db
需要修复,而不是此处的代码)。
;add dx, r
;imul dx, cx
我会使用 []
r
左右的括号再次,乘法/加法顺序当然是错误的。
不错的尝试,但不要犹豫取消注释那段代码,用一些调试值预先设置寄存器,然后直接跳到它,在调试器中打开二进制文件,单步执行以验证它按你的意愿工作。您可能会很快找到我在上面写的所有这些内容。
然后只需将其变成循环(使用任何 ASM 书籍/教程以及一些有关使用数组/字符串的示例,学习使用指针,然后应该不难完成)。
关于algorithm - 汇编中的 Adobe Type 1 加密算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44163068/
我是 Adobe InDesign Server 的新手,我很难找到一个好的厨房水槽应用程序。我从 SDK 获得的所有示例似乎都部分起作用。我想要做的就是从服务器端使用 InDesign 的母版页
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
我有一个带有完整设计页面的 xd adobe 链接。我想在 adobe xd windows 桌面应用程序中打开这些设计页面,但我不能。如何在 adobe xd windows 桌面应用程序中打开此链
activeDocument.fitArtboardToSelectedArt() 调用此命令时,AI 在 AI 5.1/6 32 位和 64 位版本上崩溃。我可以使用菜单中的命令。有没有人遇到过这个
activeDocument.fitArtboardToSelectedArt() 调用此命令时,AI 在 AI 5.1/6 32 位和 64 位版本上崩溃。我可以使用菜单中的命令。有没有人遇到过这个
如果可以,应该在哪里配置? 从文档中,所有提到的忽略文件都是关于从 SVN 提交 中排除 .vlt,但我们面临相反的问题 — 我们想排除来自 VLT 提交 的文件系统上的文件——例如.DS_Store
我正在 AdobeXD 中制作移动下拉菜单。 除了我的主页,我还有另外两个画板;菜单本身和一个按钮。 我想要做的就是触发菜单向下滑动,并将退出按钮覆盖在首先触发效果的按钮顶部。 它会覆盖退出按钮,
Javascript 的 setTimeout函数是window的一个方法目的。此对象在 ExtendScript 中不存在,因此不可用于为 Adobe InDesign 或 Illustrato
有人可能会争论它是否与摄影有关,但由于它与 DNG 格式有关,所以在这里问。 我正在尝试构建一个 Adobe DNG SDK,以便我能够将许多不同的相机原始格式转换为 *.dng 格式。 我为 h
我正在 Adobe CQ5.5 中开发一个自定义容器组件,我想要一个自定义消息作为占位符,而不是默认的“将组件或 Assets 拖到此处”。 到目前为止,我发现我必须添加 cq:emptyText
我想在导入 XML 时使用 Internet URL 将图像加载到 InDesign 模板中。 这可能吗?或者图片是否需要存储在本地机器上? 最佳答案 这可能吗?不需要。镜像需要存储在本地机器上吗?是
在 Adobe Edge Animate 中,如何获取 Symbol 的当前时间? 我混合使用 jQuery 和 Adobe Edge 代码来编程我的页面。我想检查一个符号的时间是否停留在第一
如果我将 adobe xd 文档放置在本地计算机上的任何位置。 示例:C:\doc\adobe-xd\brand\brand.xd 打开它并运行插件 是否可以检索 adobe xd 文档位置。 P.S
我正在使用 AEM 6.1 和 Maven 来管理依赖项。我可以看到 bundle com.adobe.granite.poi 版本 2.0.0 随 AEM 实例一起提供。但我似乎无法在 Adob
我正在使用 adobe labs magic selection 工具,但它要求用户进行 adobe 登录。有什么办法可以不让用户登录,但仍然使用 magic selection 工具?我听说过这个,
我们有 Adobe PDF writer,希望能够使用它而不是 ghostscript。 SaveAs() 函数是否锁定在 ghostscript 中,如果是,我该如何使用 adobe pdf w
我想知道 Adobe Experience Manager (AEM) 6.2/6.3 使用哪个版本的 Apache Sling?我在各种网站上进行了搜索,包括 Adobe 自己的文档,但似乎
还在努力探索动作剧本。有没有办法访问Android手机的接近感应器?想要使用传感器的输出关闭探测器。找到了里查多松/接近感应器(https://github.com/richardolsson/pro
我对 Day Cq5 还很陌生。我的对话框中有一个复选框,我想在用户选择或取消选择它时在我的 jsp 中检索它的 bool 值。请帮忙 最佳答案 如果要从组件的 JSP 中检索值,请执行以下操作: b
http://helpx.adobe.com/experience-manager/kb/HowToDefineComponentListDynamically.html 我在上面尝试过,但由于文章的
我是一名优秀的程序员,十分优秀!