0xD800 最近的时间轴更新
0xD800

0xD800

V2EX 第 439125 号会员,加入于 2019-09-01 20:21:17 +08:00
今日活跃度排名 3031
0xD800 最近回复了
21 小时 36 分钟前
回复了 0xD800 创建的主题 Java 分享一个 Java 中非常糟糕的 API 设计
解决方案如下:

// 指定一个自定义的 Provider
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1", new PBEProvider());

// PBEProvider
public class PBEProvider extends Provider {
public PBEProvider() {
super("PBEProvider", 1.0, "MyProvider v1.0: Custom SecretKeyFactorySpi Implementation");
put("SecretKeyFactory.PBKDF2WithHmacSHA1", PBESecretKeyFactorySpi.class.getName());
}
}

// PBESecretKeyFactorySpi
public class PBESecretKeyFactorySpi extends SecretKeyFactorySpi {

String prfAlgo = "HmacSHA1";

@Override
protected SecretKey engineGenerateSecret(KeySpec spec) throws InvalidKeySpecException {
if (spec instanceof PBEKeySpec pksp) {
return new PBKDF2KeyImpl(pksp, this.prfAlgo);
} else {
throw new InvalidKeySpecException("Unsupported KeySpec");
}
}
// ...省略其他方法
}


// 自己实现一个 PBKDF2KeyImpl
// 重写 getPasswdBytes 方法
// 将每个 byte 直接转成 char 传入,然后再强转还原 byte[]即可
private static byte[] getPasswordBytes(char[] passwd) {
byte[] result = new byte[passwd.length];

for (int i = 0; i < passwd.length; i++) {
result[i] = (byte) passwd[i];
}

return result;
}


其中遇到一个问题,JDK 的 PBKDF2KeyImpl 里面有 CleanFactory ,搜了下好像是清理用的,我没处理这个直接注释了。
1 天前
回复了 0xD800 创建的主题 Java 分享一个 Java 中非常糟糕的 API 设计
@DefoliationM #43 很遗憾 不行的。。。
1 天前
回复了 0xD800 创建的主题 Java 分享一个 Java 中非常糟糕的 API 设计
@Rache1 说到这个我其实还是会点,至少对填充方式,一些数论基础,RSA 加解密原理,ECC 加解密原理都是熟悉的。
不过 IV 之类的了解还挺少,用的不多,我觉得也不难吧。

填充算法也简单。
1 天前
回复了 0xD800 创建的主题 Java 分享一个 Java 中非常糟糕的 API 设计
@yusheng88 #37
回复:
1. 上面有朋友发了 CPython 的实现,password 是允许字节流的
2. PBKDF 定义没看,但是可以参考#21 的回复,规范定义是字节流,只是建议用 ASCII 或 UTF8 序列
3. JDK 的类库我是研究了才发现这个奇葩的设计的呢

所以您有什么更好的解决方案吗?请指教。
另外我英文水平不是很好,无法直接阅读上面那些规范,自然不愿意去细读,那个网页的排版也差。
1 天前
回复了 0xD800 创建的主题 Java 分享一个 Java 中非常糟糕的 API 设计
@0o0O0o0O0o 哈哈 我并不是死磕,而是翻译代码的时候发现这个设计很奇葩,居然只允许用 char[],我用过其他的加密库都是允许传 byte[],这个操作我确实无法理解。😁
我开源过一个能满足基本 OA 的,就是代码写得很一般,你可以参考下:
演示地址: https://admin.l1yp.com/
前端: https://github.com/L1yp/van
后端: https://github.com/L1yp/van-app
,写得真的挺一般的,参考一二即可,也非常欢迎找我交流,知无不言~
支持,虽然我可能看不懂,但是表示支持😁
2 天前
回复了 0xD800 创建的主题 Java 分享一个 Java 中非常糟糕的 API 设计
@pkoukk #34 哈哈 挺无语的
2 天前
回复了 0xD800 创建的主题 Java 分享一个 Java 中非常糟糕的 API 设计
@geelaw 是的,输入法的问题,我想打的是嗝屁了
2 天前
回复了 0xD800 创建的主题 Java 分享一个 Java 中非常糟糕的 API 设计
@zzl22100048 是的👍
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2342 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 13:43 · PVG 21:43 · LAX 06:43 · JFK 09:43
Developed with CodeLauncher
♥ Do have faith in what you're doing.