加密数据 存数据库 部分丢失
时间:2011-11-29
来源:互联网
因此就不能再用解密算法还原了。
我用的数据库是Access,加解密算法是AES算法。
请了解的大神帮一下忙。
作者: yuanfj86912 发布时间: 2011-11-29
就是你要先搞清楚是你加密时候出的错,还是存进去的时候出的错,抑或是你读数据的时候出的错..
作者: AlfaCuton 发布时间: 2011-11-29
你看下数据库 里面存的数据是不是你加密后数据。
就是你要先搞清楚是你加密时候出的错,还是存进去的时候出的错,抑或是你读数据的时候出的错..
我看过了,加密部分没有问题,存入前也没有问题,可是到取出来是后面就少了一段。
有没有大神遇到过啊。求解救!
作者: yuanfj86912 发布时间: 2011-11-29
用char或byte数组
作者: stjay 发布时间: 2011-11-29
加密后的数据可能不是字符串了,CString会被截断
用char或byte数组
可是我加密前 char* 字符串的长度 和加密后赋给CString的长度是一样的啊!
作者: yuanfj86912 发布时间: 2011-11-29
从之前程序得到 m_manageCode
加密前我把CString转化成BYTE型:
int strLength = m_manageCode.GetLength()+1;
BYTE* Btmp = new BYTE[100]; //
Btmp = (BYTE*)m_manageCode.GetBuffer(m_manageCode.GetLength());
*(Btmp+m_manageCode.GetLength()) = '\0';
加密
theApp.aes.Cipher((void *)Btmp,strLength-1);
加密后再把BYTE型转化成CString:
CString manageCode ;
manageCode.Format("%s",Btmp);
存入数据库…………
//AES解密
从数据库中取出CString类型的数据 转化成BYTE
int strLength = Managecode.GetLength()+1;
BYTE * Ftmp = new BYTE[100];
Ftmp = (BYTE*)Managecode.GetBuffer(Managecode.GetLength());
解密
theApp.aes.InvCipher((void *)Ftmp, strLength-1);
解密后再把BYTE型转化成CString:
CString manageCode;
manageCode.Format("%s", Ftmp);
为什么解密后的数据和原文不相同。其中加解密函数是没有问题的。
希望大神帮帮忙啊!!
作者: yuanfj86912 发布时间: 2011-12-06
// 1、数据库字段的长度是否足够?
// 2、密文中是否有'\0'存在,导致数据被截断?
// 这两项结合直接查看数据库中的内容和计算得到的密文比较
// 3、取出的操作是否正确?
作者: lfchen 发布时间: 2011-12-06
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28