我在 Java 和 PHP 上使用 PBKDF2 算法生成相同的加密密码时遇到了一些困难。
我正在使用以下 Java 实现来生成大小为 16 字节的随机字节数组的散列。然后我将散列和盐分别存储在 MySQL 数据库中,但是当我使用从数据库中检索到的盐在 PHP 中执行相同的操作时,我得到几乎完全相同的加密,除了散列有一个前导 0 和我我终其一生都无法弄清楚原因。
爪哇:
public String hashPassword(String password, byte[] salt){
char[] passwordChars = password.toCharArray();
PBEKeySpec spec = new PBEKeySpec(
passwordChars,
salt,
ITERATIONS,
KEY_LENGTH
);
SecretKeyFactory key = null;
try {
key = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
byte[] hashedPassword = null;
try {
hashedPassword = key.generateSecret(spec).getEncoded();
} catch (InvalidKeySpecException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return String.format("%x", new BigInteger(hashedPassword)); …Run Code Online (Sandbox Code Playgroud) 我在使用 GridBagLayout 时遇到问题,一切似乎都按预期工作,但 JFrame 底部有一个我似乎无法摆脱的小间隙。
这是我正在运行的代码...
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test {
private JFrame frame;
private JPanel container, header, content, footer;
public Test(){
frame = new JFrame();
frame.setSize(600, 400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridBagConstraints gbc = new GridBagConstraints();
container = new JPanel();
container.setBackground(Color.blue);
container.setLayout(new GridBagLayout());
header = new JPanel();
header.setBackground(Color.red);
header.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));
header.add(new JButton("Test"));
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 1.0;
gbc.fill = GridBagConstraints.BOTH; …Run Code Online (Sandbox Code Playgroud) 我已经开始实现自己的遗传算法,并且正处于决定如何为新一代选择父母的阶段。我读了一些书,看来有很多不同的方法可以解决这个问题。
我知道各种选择技巧(比赛,轮盘赌),但我似乎找不到的信息就是应该选择多少个父母。
我要处理的初始人口规模介于50-75个人之间。我当时正在考虑为下一代选择一半的人口,因此每一代人口都将减少一半,不确定这是否是最好的选择。
任何建议都很好。
我正在使用 MySQL 的 EER 图构建器来构建数据库的设计,我知道可以创建例程组并在其中创建过程和函数,但这对于计划事件也可能吗?我尝试在例程组内创建一个事件,但它一直说我有语法错误,即使当我通过查询选项卡创建事件时,事件的语法实际上是正确的。事件只能通过查询命令行创建吗?