項目中要使用安全鍵盤,又囊中羞澀無法購買廠商的方案;
研究了一下,主要涉及到自定義鍵盤,輸入jni加密存儲,全程在java內存中不出現明文密碼,以及一些禁回寫,禁截屏的操作。
主要參考了https://blog.csdn.net/xiaoyi2412/article/details/89157025這篇文章。
但文章中給的項目年代相對久遠,并且加密方式md5也不滿足需求,所以自己重新創建了一個項目開始修改;
一.做了如下修改:
1.使用CMake進行jni的編譯;
2. 分離出aar工程,方便集成使用;
3.增加DES/ECB/PKCS7Padding的加密方式,理論上引入的算法庫可以支持的加密方式都可以做,只是目前項目中使用的是這種;
4.在加密庫選擇上,main分支選擇在c層使用jni回調java層的bouncycastle庫;openssl分支選擇在c層直接使用openssl的crypto加密庫進行加密;
5.刪除了一些無用的圖片資源
二.修改后發布的項目地址如下:
https://github.com/hyy12345678/SKeyboard
main分支在c層通過jni回調java層算法庫進行加密,理論上明文在jni回調時還是會出現在java內存中。
openssl分支在c++層使用openssl的加密庫算法,實現真正意義的在java內存中不出現密碼明文。