pb 数据加密解密

hxbkkk 2009-03-19 10:13:17
pb +sqlserver 将客户端输入的数据进行加密保存,用查询分析器或者其他工具看到的字段内容是加密后的,客户端调用再解密。即求一个可逆的加密解密算法或者例子。找了N天,没有合适的。
...全文
472 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxbkkk 2009-04-28
  • 打赏
  • 举报
回复
重开
hxbkkk 2009-03-23
  • 打赏
  • 举报
回复
谢谢各位支持,虽然不是很满意,结贴
hxbkkk 2009-03-21
  • 打赏
  • 举报
回复
加密肯定是增加维护难度,谁也不想啊,当你的劳动成果某一天被干掉时,不甘啊
softvery 2009-03-20
  • 打赏
  • 举报
回复
这个以上方法加密出来的是乱码,但不妨碍加密解密,可以在转换为16进制。
DLL的效率会高一些,当然就要动用API了,我写了一个DLL,楼主如果需要就留下EMAIL,发留言给我。
softvery 2009-03-20
  • 打赏
  • 举报
回复
//====================================================================
// 函数:f_encrypt()
//--------------------------------------------------------------------
// 描述:用给定的密钥加密字符串
//--------------------------------------------------------------------
// 参数:
// string st_text 待加密字串
// string st_key 密钥
//--------------------------------------------------------------------
// 返回: string
//--------------------------------------------------------------------
//
//--------------------------------------------------------------------
// 修改历史:摘自网络,地址遗忘
//
//====================================================================

string st_textencrypt
long lg_textlen,lg_keylen,lg_key
long lg_loop

IF isnull(st_key) OR isnull(st_text) THEN RETURN ''

lg_keylen = len(st_key)
FOR lg_loop = 1 TO lg_keylen
lg_key = lg_key + (asc(mid(st_key,lg_loop,1)) * lg_loop)
IF lg_key > 255 THEN lg_key = lg_key - 255
NEXT

DO While lg_key > 255
lg_key = lg_key - 255
LOOP

LONG lg_cbyte

lg_textlen = Len(st_text)

FOR lg_loop = 1 TO lg_textlen
lg_cbyte = asc(mid(st_text,lg_loop,1)) + lg_key
IF lg_cbyte > 255 THEN lg_cbyte = lg_cbyte - 255
st_textencrypt = st_textencrypt + char(lg_cbyte)
lg_key = lg_key + lg_cbyte
IF lg_key > 255 THEN lg_key = lg_key - 255
NEXT

RETURN st_textencrypt
softvery 2009-03-20
  • 打赏
  • 举报
回复
这个只是PB实现的DES加密解密,非等长。PB的效率不是很高,我写了一个DLL的,楼主如果需要请留下EMAIL
//====================================================================
// 函数: f_decrypt()
//--------------------------------------------------------------------
// 描述:用给定的密钥解密字符串,与uf_pub_encrypt相对
//--------------------------------------------------------------------
// 参数:
// string st_text 待解密字串
// string st_key 密钥
//--------------------------------------------------------------------
// 返回: string
//--------------------------------------------------------------------
//
//--------------------------------------------------------------------
// 修改历史: 摘录子网上,具体地址……
//
//====================================================================

string st_textdecrypt
IF isnull(st_key) OR isnull(st_text) THEN RETURN ''
long lg_textlen,lg_keylen,lg_key
long lg_loop

lg_keylen = len(st_key)

FOR lg_loop = 1 TO lg_keylen
lg_key = lg_key + (asc(mid(st_key,lg_loop,1)) * lg_loop)
IF lg_key>255 THEN lg_key = lg_key - 255
NEXT

DO While lg_key>255
lg_key = lg_key - 255
LOOP

lg_textlen = len(st_text)

long lg_cbyte
FOR lg_loop = 1 TO lg_textlen
lg_cbyte = asc(mid(st_text,lg_loop,1)) - lg_key
IF lg_cbyte<0 THEN lg_cbyte = lg_cbyte + 255
st_textdecrypt = st_textdecrypt + char(lg_cbyte)
lg_key = lg_key + asc(mid(st_text,lg_loop,1))
IF lg_key > 255 THEN lg_key = lg_key - 255
NEXT

RETURN st_textdecrypt
SKY_4K_PPM 2009-03-20
  • 打赏
  • 举报
回复
随便想个算法,只要是可逆推就得了。搞成DLL 调用即可。
LamarChen 2009-03-20
  • 打赏
  • 举报
回复
何必那么麻烦啊 你这样搞 以后数据库维护就不很方便了哦
hxbkkk 2009-03-20
  • 打赏
  • 举报
回复
谢谢各位的帮忙,各位的意见各有所长,现在增加100分,期望等长的加密解密,因为不想改变数据库。我的邮箱hxbkkk@qq.com,
PB菜鸟 2009-03-20
  • 打赏
  • 举报
回复
首先要找个正确有效的加密解密算法。
sun1976 2009-03-20
  • 打赏
  • 举报
回复
关键数据加密就行了,不用所有保存到数据库的数据都加密啊
可以自己写个函数(也可以使用现成dll声明api)
不过是转换代码,再转回来,
保存和显示适用不同的数据窗口,显示一个藏一个.

保存前调加密函数把需要加密的数据改掉,再根据显示的数据窗口设置各行列等的更新状态
显示的时候用保存数据用的数据窗口检索,复制到显示的数据窗口,调解密函数改成正常数据
感觉用两个更方便些
fuxiaoyang13 2009-03-20
  • 打赏
  • 举报
回复
学习学习!!!
灰色 2009-03-20
  • 打赏
  • 举报
回复
学习!!
hxbkkk 2009-03-20
  • 打赏
  • 举报
回复
高手
peixun 2009-03-19
  • 打赏
  • 举报
回复
很多
hxbkkk 2009-03-19
  • 打赏
  • 举报
回复
思路知道啊,有没有例子啊,很多例子处理中文和西文结合的时候出错
builderwfy 2009-03-19
  • 打赏
  • 举报
回复
最簡單的就是寫兩個函數,一個加密,一個解密,在保存是加密,檢索出來再解密
hxbkkk 2009-03-19
  • 打赏
  • 举报
回复
是不想别人拷贝我的数据和看我的数据啊,DES加密解密怎么处理啊
lsy999 2009-03-19
  • 打赏
  • 举报
回复
up
softvery 2009-03-19
  • 打赏
  • 举报
回复
可以使用DES加密解密。
加载更多回复(10)

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧