Java 处理加密密钥

Java 处理加密密钥,java,android,security,key-management,Java,Android,Security,Key Management,我有一个我写的小应用程序,它使用用户创建的对称加密密钥来加密文件,我不确定如何在程序中使用密钥 说清楚一点,我不想将这个密钥永久存储在任何地方,但显然我需要将它作为字符串或其他东西传递,否则我们根本无法使用它 我有一些具体问题: 将密钥作为字符串使用是否安全,或者最好使用字节数组之类的内容 我认为我们不希望将解密后的文件保存在文件系统中的任何位置,这意味着它们必须加载到堆(或堆栈?)中。为了做到这一点,需要在整个程序期间重复使用密钥。我们应该避免将其存储为类/实例变量吗 当我们结束程序时,我们应

我有一个我写的小应用程序,它使用用户创建的对称加密密钥来加密文件,我不确定如何在程序中使用密钥

说清楚一点,我不想将这个密钥永久存储在任何地方,但显然我需要将它作为字符串或其他东西传递,否则我们根本无法使用它

我有一些具体问题:

  • 将密钥作为字符串使用是否安全,或者最好使用字节数组之类的内容

  • 我认为我们不希望将解密后的文件保存在文件系统中的任何位置,这意味着它们必须加载到堆(或堆栈?)中。为了做到这一点,需要在整个程序期间重复使用密钥。我们应该避免将其存储为类/实例变量吗

  • 当我们结束程序时,我们应该如何处理关键变量?是否应该手动覆盖它


  • have look@HemantParmar我以前读过KeyStore,但是使用它真的比使用用户生成的密钥更好吗?我真的在想gpg是如何工作的。您选择的密钥不仅用于身份验证,还用于实际的加密/解密。