我想知道用原生代码实现加密函数是否更安全。使用Java时,您不能确定GC是否对内存进行了重新排序并在内存中保留了密钥的浅副本,即使您在en/decryption之后立即清零了密钥。
也许这是一个愚蠢的问题,但我找不到任何信息。本机代码仍然在虚拟机中运行沙箱,因此GC/ VM /系统是否可以重新排序内存,从而留下一个浅拷贝?那么堆栈和堆是静态的还是可以移动的?AFAIK他们有虚拟地址,所以这是可以做到的。
谢谢并致以最良好的问候
发布于 2012-04-19 00:07:16
Native代码是为ARM (我认为现在是英特尔)编译的,而不是Dalvik VM,它直接在处理器上运行,它由Dalvik加载和调用,但它不直接由Dalvik控制。本机代码的堆栈和堆是真实的。调用memcpy/memset将永久改变内存。
所有现代系统也都有虚拟内存,所以这就是您在安全性方面可能得到的最大收获。
https://stackoverflow.com/questions/10213365
复制相似问题