我用CryptEncrypt加密数据后,发现加密后的字符串中间有‘\0’,怎么保存?

best_diyer 2003-10-20 09:19:59
BOOL CRYPTFUNC CryptEncrypt(
HCRYPTKEY hKey,
HCRYPTHASH hHash,
BOOL Final,
DWORD dwFlags,
BYTE *pbData,
DWORD *pdwDataLen,
DWORD dwBufLen
);
比如pdwDataLen返回值为50,但第40个字符是\0,那我怎样把它保存到数据库中呢?
又怎样读取呢?
大虾救命。
...全文
342 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihongxing2002 2004-02-09
  • 打赏
  • 举报
回复
Mark
linush2001 2004-02-05
  • 打赏
  • 举报
回复
把加密后各个字符的ASCII码(【如('\0'记为'FF').】)保存下来就可以了。
当然你也可以自己设定一个编码规则进行处理。
best_diyer 2004-02-04
  • 打赏
  • 举报
回复
为什么没有人回答呢?
best_diyer 2004-02-03
  • 打赏
  • 举报
回复
难道只能本机加密,本机解密吗?
best_diyer 2004-02-03
  • 打赏
  • 举报
回复
我现在保存下来了,用了HEXTOBIN()函数,但结果为EACDFA4334000000等,感觉不好。
还有一个问题,我发现不同的计算机加解密的结果不相同,各位大侠有否遇到,请问怎么解决。
lianghao2 2003-10-30
  • 打赏
  • 举报
回复
up/
我不懂电脑 2003-10-27
  • 打赏
  • 举报
回复
保存到数据库你可以用Blob字段以二进制方式就可以了。
netsys2 2003-10-27
  • 打赏
  • 举报
回复
可以结题了!

别按ASCII码存,按二进制存数据库
orcher 2003-10-27
  • 打赏
  • 举报
回复
编码
teatool 2003-10-21
  • 打赏
  • 举报
回复
二进制数据中\0也是合法字符
best_diyer 2003-10-21
  • 打赏
  • 举报
回复
一头雾水
wyb_45 2003-10-21
  • 打赏
  • 举报
回复
使用void * 保存到数据库里也应该是Blob数据流,而不是字符串
这两方面在这个论坛上有很多。你只是同时遇到两个问题,一个一个地解决。
blankman 2003-10-20
  • 打赏
  • 举报
回复
这种问题一般都是将指针转化为 void * 的
然后提供一个写入的长度,这样就不会担心其中的字符了

好多函数都是这样的,你可以留意一下

input(void * data, int datalength);
huangjuliang 2003-10-20
  • 打赏
  • 举报
回复
这个我觉得不好,你用什么来代替呢??

你有某个字符来代替了,
刚好这个字符串也是这个字符,
这如何区分?

还是转化为Hex保存吧!
zihan 2003-10-20
  • 打赏
  • 举报
回复
或者你用一个字符把它替换了,然后读取的时候再替换回来.
Behard 2003-10-20
  • 打赏
  • 举报
回复
你可以转换为 Hex 保存的

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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