目的:
使用QT進(jìn)行AES加密瓮床,能用CryptoJs進(jìn)行AES解密夷都。
說(shuō)明:
CryptoJs使用的AES加密文件為 aes.js
網(wǎng)上QT常用的AES加密方式
- Crypto++庫(kù)
- Qca庫(kù)
- Botan庫(kù)
- 網(wǎng)友貢獻(xiàn)的AES加密代碼
crypto++ 和 qca 都需要下載源碼編譯成靜態(tài)庫(kù)或者動(dòng)態(tài)庫(kù)調(diào)用,方法比較復(fù)雜尤莺,沒(méi)有編譯成功旅敷。
botan 是QT自帶的庫(kù),只需要引入頭文件即可颤霎,調(diào)用還算是比較方便媳谁,但是我嘗試的時(shí)候發(fā)現(xiàn)加密以后不能正確解密涂滴,不知道哪里弄錯(cuò)了,按道理來(lái)說(shuō)不應(yīng)該這樣韩脑。
網(wǎng)友貢獻(xiàn)的AES加密代碼,可以正常加密和解密粹污,但是和CryptoJs默認(rèn)加密方式得出的結(jié)果不一樣段多,配置了mode和padding 也不能得到相同的結(jié)果。
說(shuō)到這里壮吩,常規(guī)手段已經(jīng)用完了进苍,好吧,結(jié)果一點(diǎn)都不理想鸭叙。
非常規(guī)手段:
用QT調(diào)用js方法進(jìn)行加解密觉啊。
大概步驟就是使用QJSEngine加載本地aes.js文件,然后調(diào)用js里面的方法進(jìn)行加解密沈贝,獲取返回結(jié)果杠人,我這邊得出的結(jié)果就是,加密不正確且無(wú)法解密宋下。
到這里就結(jié)束了嗎嗡善?不!我覺(jué)得還可以再搶救一下学歧,也就是這篇文章的意義所在
==使用QML包含aes.js文件罩引,再用QML函數(shù)調(diào)用aes.js的AES加密方法,最后用C++調(diào)用QML內(nèi)的方法枝笨,獲取加解密結(jié)果袁铐,成功!==
完横浑!
原創(chuàng)文章剔桨,轉(zhuǎn)載請(qǐng)注明出處:http://yliyun.com/blog/2016/05/30/qt-aes-cryptojs/
歡迎選擇一粒云 ,您的專屬企業(yè)網(wǎng)盤