2012-03-27 24 views
0

想象一下,你在堆內存中有一個對稱密鑰,你不再需要它,但你想確保它在釋放/垃圾收集之前被擦除。如果你自己擦拭,優化器很可能會跳過這一步,因爲沒有必要。那麼,如何正確地做到這一點?如何保證在Java中垃圾收集之前清除機密數據?

+1

http://stackoverflow.com/questions/8881291/why-is-char-preferred-over-string-for-passwords – 2012-03-27 14:57:27

+0

基本上不可能做到安全,東西有關使用字符數組是基本上是一個紅鯡魚(在清除它之前發生單個GC,突然你在內存中有兩個副本..哎呀)。唯一保證工作方式是使用DirectByteBuffer,但這很麻煩。我曾經使用不安全的方式在GC堆外創建String實例以獲得過去的樂趣,但由於顯而易見的原因,這很脆弱。 – Voo 2012-03-27 20:11:16

回答