1. SQL Server 2008 r2数据库下面新建一个标量值函数,然后怎么给新建好的函数加密
当然,加密的存储过程,函数是不可以直接访问修改的
两种方式
1、由编写者提供sql函数源码,这样你是可以修改的
2、网上找解密的三方工具,我忘记叫什么了,很久没用了
2. 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 密码存储
3. 现有一函数加密算法,其算法加密过程如下 急求答案
加密函数(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
4. 破解一个加密函数的方法
楼主这个问题涉及到的是逆向工程, 已经不是程序语言的问题了.
第一句是取地址, 第二句是修改内存页的读写, 因为在内存中, 代码区是只读的, 这里改成可读可写. 第三句是将函数的第一句改成E9, 其实这里的E9对应的是汇编里的JMP, 配合第四句修改第二个字节的内容, 联合起来的效果就是该函数入口处的第一句成了JMP dididi(相对地址), 当调用这个函数时, 就会跳转到自己写的函数dididi里了.
这里有一个前提, dididi的函数定义(参数个数, 参数类型, 返回值类型)必须与函数Encrypt的完全一致.
你用VB取得首地址后修改失败是因为第三句*p的意思是修改p指针指向的字节的内容, 而VB中没有指针类型, 正确的做法应该是使用memset或者memcpy这两个API来对内存中的数据进行操作, 从而回避VB内没有指针的问题.
不知道上面说的这些你有没有看懂, 不过楼主想找一个懂VB, C++ 和 汇编的, 上网络知道的人来回答你的问题, 估计很困难.....
5. 用C语言编写一个与此加密函数对应的解密函数
楼主这个加密算法对不同的char a会加密出来的数据不是唯一的,是有可能相同的,这种加密算法没有办法解密的。
比如char a = 3,加密出来char b = 8;char a = 4,加密出来char b = 8
如果给一个加密后的char b = 8的话,这个是不可能解密出来对应的数据的。
加密算法要对不同的数据加密出来的数据也要是不同的。
6. 编写一个加密函数对一个字符串加密,函数原型为:
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!='