函数加密
‘壹’ 破解一个加密函数的方法
楼主这个问题涉及到的是逆向工程, 已经不是程序语言的问题了.
第一句是取地址, 第二句是修改内存页的读写, 因为在内存中, 代码区是只读的, 这里改成可读可写. 第三句是将函数的第一句改成E9, 其实这里的E9对应的是汇编里的JMP, 配合第四句修改第二个字节的内容, 联合起来的效果就是该函数入口处的第一句成了JMP dididi(相对地址), 当调用这个函数时, 就会跳转到自己写的函数dididi里了.
这里有一个前提, dididi的函数定义(参数个数, 参数类型, 返回值类型)必须与函数Encrypt的完全一致.
你用VB取得首地址后修改失败是因为第三句*p的意思是修改p指针指向的字节的内容, 而VB中没有指针类型, 正确的做法应该是使用memset或者memcpy这两个API来对内存中的数据进行操作, 从而回避VB内没有指针的问题.
不知道上面说的这些你有没有看懂, 不过楼主想找一个懂VB, C++ 和 汇编的, 上网络知道的人来回答你的问题, 估计很困难.....
‘贰’ 自定义函数加密
http://javascriptcompressor.com/
‘叁’ excel有没有函数加密锁功能之类的
工作表中很多数据都是由公式计算生成的,那么如何让别人只看到计算的结果,而将使用的公式隐藏起来呢?今天我们就向大家介绍使用宏来解决这一问题。
一、创建宏
启动Excel,依次选择“工具”—“宏”—“录制新宏”,在打开的窗口中输入宏的名称,并把“保存在”项设为“个人宏工作簿”,单击“确定”按钮进入宏录制模式。此时我们可以在当前窗口中看到宏录制的工具栏,单击“停止录制”退出宏的录制。
退出后,在Excel中按下“Alt+F11”键,在打开的VB编辑窗口中选择“VBAProject(PERSONAL.XLS)”—“模块”—“模块1”,然后将右侧窗口中的内容替换成:
Sub密码保护()//宏的名称
ActiveSheet.Unprotect("888888")//默认密码
Cells.Select
Selection.Locked=False
Selection.SpecialCells(xlCellTypeFormulas,23).Select
Selection.Locked=True
Selection.FormulaHidden=True
ActiveSheet.Protect("123456")
ActiveSheet.EnableSelection=xlUnlockedCells
EndSub
做好之后保存设置退出编辑窗口(图1),在实际的操作过程中需要将默认的888888换成自己的密码,以免造成泄露。
图1
二、应用宏
在Excel中打开“工具”菜单中的“自定义”命令,在“命令”选项卡的“类别”中选择“宏”,在“命令”中选择“自定义按钮”,并将其拖放到工具栏上,单击工具栏上的按钮,在弹出的窗口中选择我们创建的宏名并保存设置。
至此,我们要加密时只需单击该按钮,就可以将当前工作表保护起来,并且默认密码为888888,怎么样这样的操作是不是够方便呢。
‘肆’ 用C语言编写一个与此加密函数对应的解密函数
楼主这个加密算法对不同的char a会加密出来的数据不是唯一的,是有可能相同的,这种加密算法没有办法解密的。
比如char a = 3,加密出来char b = 8;char a = 4,加密出来char b = 8
如果给一个加密后的char b = 8的话,这个是不可能解密出来对应的数据的。
加密算法要对不同的数据加密出来的数据也要是不同的。
‘伍’ sql Server 2008 r2数据库下面新建一个标量值函数,然后怎么给新建好的函数加密
当然,加密的存储过程,函数是不可以直接访问修改的
两种方式
1、由编写者提供sql函数源码,这样你是可以修改的
2、网上找解密的三方工具,我忘记叫什么了,很久没用了
‘陆’ 现有一函数加密算法,其算法加密过程如下 急求答案
加密函数(3*Y+2)mod 10=Z
A 是65,计算后是 197mod10=7
B 是200mod10=0
C 是203mod10=3
D 是206mod10=6
E 是209mod10=9
F 是212mod10=2
G 是215mod10=5
H 是218mod10=8
I 是221mod10=1
J 是224mod10=4
所以 0~9 的明文分别是
BIFCJGDAHE
所以62590 对应明文为 DIGEB
‘柒’ MySQL函数的加密函数
a) 函数 AES_ENCRYPT(str ,key_str ) , AES_DECRYPT(crypt_str ,key_str )
函数使用说明:这些函数允许使用官方 AES 进行加密和数据加密 ( 高级加密标准 ) 算法 , 即以前人们所熟知的 “Rijndael” 。 保密关键字的长度为 128 比特,不过你可以通过改变源而将其延长到 256 比特。我们选择了 128 比特的原因是它的速度要快得多,且对于大多数用途而言这个保密程度已经够用。
b) 函数DECODE(crypt_str ,pass_str )
函数使用说明:使用 pass_str 作为密码,解密加密字符串 crypt_str , crypt_str 应该是由 ENCODE() 返回的字符串。
c) 函数 ENCODE(str ,pass_str )
函数使用说明:使用 pass_str 作为密码,解密 str 。 使用 DECODE() 解密结果。
d) 函数 DES_DECRYPT(crypt_str [,key_str ])
函数使用说明:使用 DES_ENCRYPT() 加密一个字符串。若出现错误,这个函数会返回 NULL 。
e) 函数 DES_ENCRYPT(str [,(key_num |key_str )])
函数使用说明:用 Triple-DES 算法给出的关键字加密字符串。若出现错误,这个函数会返回 NULL 。
f) 函数 ENCRYPT(str [,salt ])
函数使用说明:使用 Unix crypt() 系统调用加密 str 。 salt 参数应为一个至少包含 2 个字符的字符串。若没有给出 salt 参数,则使用任意值。
g) 函数 MD5(str )
函数使用说明:为字符串算出一个 MD5 128 比特检查和。该值以 32 位十六进制数字的二进制字符串的形式返回 , 若参数为 NULL 则会返回 NULL 。例如,返回值可被用作散列关键字
h) 函数 OLD_PASSWORD(str )
函数使用说明:当 PASSWORD() 的执行变为改善安全性时, OLD_PASSWORD() 会被添加到 MySQL 。 OLD_PASSWORD() 返回从前的 PASSWORD() 执行值 ( 4.1 之前 ) ,同时允许你为任何 4.1 之前的需要连接到你的 5.1 版本 MySQL 服务器前客户端设置密码,从而不至于将它们切断
i) 函数PASSWORD(str )
函数使用说明:从原文密码str 计算并返回密码字符串,当参数为 NULL 时返回 NULL 。这个函数用于用户授权表的Password 列中的加密MySQL 密码存储
‘捌’ 求一个加密函数,对任意一个数字加密得到固定16位数字,可解密
直接用des或3des加密,得到的字符串,用ascii码拼接成一串数字,不足16位时,在前面或后面补0
‘玖’ 编写一个加密函数对一个字符串加密,函数原型为:
char*entropy(char*s)
{
if(s==0)
return0;
char*p=(char*)malloc(strlen(s)+1);
memset(p,0,strlen(s)+1);
char*temp=s;
char*temp2=p;
while(*temp!='