首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于用户输入密钥的加密

问基于用户输入密钥的加密
EN

Stack Overflow用户
提问于 2012-04-30 22:42:58
回答 2查看 627关注 0票数 3

上下文:多租户应用程序

特性:敏感数据的加密

故事:作为租户的管理员,我想使用我自己的密码或密码来加密敏感数据,这样我,而且只有我,才能完全控制所使用的密钥。

验收标准:

  1. 每个租户的管理员应该能够定义用于加密的密码或密码短语。
  2. 只有提供原始密码或密码短语的租户管理员才能了解密钥。
  3. 一旦租户管理员提供了密码或密码短语,就应该安全地存储它。

我的问题

  1. 到目前为止,我们一直使用对称密钥加密和应用程序宽密钥硬编码在应用程序中。如果每个租户都想使用自己的密钥,这将不再起作用。我们如何让每个用户定义自己的密钥?
  2. 钥匙如何存放在哪里?
  3. 在证书中存储密码/密码短语是一个有效的选项吗?如果是这样,那么如何保护密钥库呢?
EN

回答 2

Stack Overflow用户

发布于 2012-05-01 09:16:39

在不知道密钥的情况下,不可能进行加密/解密。否则,对于使用密钥派生函数(PBKDF2)的PBE来说,它似乎是一个明确的案例,.You可能使用非对称加密,但它只会在您的用例加密期间保护私钥。

票数 3
EN

Stack Overflow用户

发布于 2012-05-01 13:06:25

下面是代码片段,演示如何在应用程序中使用基于密码的加密(PBE),摘自教程

代码语言:javascript
复制
PBEKeySpec pbeKeySpec;
PBEParameterSpec pbeParamSpec;
SecretKeyFactory keyFac;

// Salt
byte[] salt = {
    (byte)0xc7, (byte)0x73, (byte)0x21, (byte)0x8c,
    (byte)0x7e, (byte)0xc8, (byte)0xee, (byte)0x99
};

// Iteration count
int count = 20;

// Create PBE parameter set
pbeParamSpec = new PBEParameterSpec(salt, count);

// Prompt user for encryption password.
// Collect user password as char array (using the
// "readPasswd" method from above), and convert
// it into a SecretKey object, using a PBE key
// factory.
System.out.print("Enter encryption password:  ");
System.out.flush();
pbeKeySpec = new PBEKeySpec(readPasswd(System.in));
keyFac = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey pbeKey = keyFac.generateSecret(pbeKeySpec);

// Create PBE Cipher
Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES");

// Initialize PBE Cipher with key and parameters
pbeCipher.init(Cipher.ENCRYPT_MODE, pbeKey, pbeParamSpec);

// Our cleartext
byte[] cleartext = "This is another example".getBytes();

// Encrypt the cleartext
byte[] ciphertext = pbeCipher.doFinal(cleartext);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10391505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档