Symbian 基于口令的加密(Password_Based_Encryption)
2010-03-26 15:56:00 来源:WEB开发网概览
存储敏感数据时, 有加密支持而不是让经验不足的安全开发者自己手动写代码,是很重要的. 正确地取得加密方案是很困难的,最好应该留给专家来做这个事情. 为了达到这个目的,Symbian为第3方提供了一个加密库的子集. 因为它们是密码学性的安全, 所以应该用它们来存储敏感数据. 这些代码片断显示了如何安全地存储数据,它们只能通过口令(password)来提取.
第1个代码片断 用口令 (password)加密一个文本块,并写入到流(stream).
第2个代码片断 是第1个 代码片断的逆过程, 给定口令和流, 已加密的数据 将被揭密,返回明文
API注解
基于口令的加密API提供一个对象来隐藏加密功能. 这就是CPBEncryptElement, 选择默认的加密算法,安装不同的向量(vectors)来确认数据和口令被加密成可接受的标准.
这个元素提供两个子元素,一个执行加密,另外一个执行解密. 另外,为了提供加密, 这个元素也提供一个方法,允许数据被串行化到一个流, 已经从流(stream)中提取.
先决条件
要先安装加密API
源代码
void CExampleStubAppUi::EncryptDataL(const TDesC& aPassword, const TDesC8& aPlainTextBlob, RWriteStream& aStream)
{
const TPtrC8 passwordPtr(REINTERPRET_CAST(const TUint8*, aPassword.Ptr()), aPassword.Length() * sizeof(TText));
// create a new element
const TPBPassword encryptionKey(passwordPtr);
CPBEncryptElement* element = CPBEncryptElement::NewLC(encryptionKey);
// create a new encryptor object based on the encryption data in the element
CPBEncryptor* encrypter = element->NewEncryptLC();
// allocate enough space to hold the encrypted text
// and then encrypt the text
HBufC8* ciphertext = HBufC8::NewLC(encrypter->MaxFinalOutputLength(aPlainTextBlob.Length()));
TPtr8 ciphertextPtr = ciphertext->Des();
encrypter->ProcessFinalL(aPlainTextBlob, ciphertextPtr);
// finally write out the encryption data
const CPBEncryptionData& header = element->EncryptionData();
- ››基于IP地址的vsftp服务器
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››Symbian S60 SocketConnection参数
- ››Symbian乏力:2010年诺基亚悲情大事记
- ››Symbian三大升级开启2011年新战略
- ››Symbian/Android/iOS/WM安装包对比
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››Symbian一个活动对象的测试例子
- ››Symbian ListBox控件
- ››Symbian下自动切换SDK的批处理代码
更多精彩
赞助商链接