首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于LDAP的ssha中的密码加密的java方法

用于LDAP的ssha中的密码加密的java方法
EN

Stack Overflow用户
提问于 2016-01-28 23:29:08
回答 2查看 8.3K关注 0票数 3

我想要加密ssha中的密码。有没有办法做到这一点?我发现了这个,但它在沙城。

代码语言:javascript
复制
private String encrypt(final String plaintext) {
        MessageDigest md = null;
        try {
            md = MessageDigest.getInstance("SHA");
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e.getMessage());
        }
        try {
            md.update(plaintext.getBytes("UTF-8"));
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e.getMessage());
        }
        byte raw[] = md.digest();
        String hash = (new BASE64Encoder()).encode(raw);
        return hash;
    }
EN

回答 2

Stack Overflow用户

发布于 2017-02-28 00:31:30

OpenLDAP有一个命令行工具来生成SSHA密码:

代码语言:javascript
复制
# slappasswd -h {SSHA} -s test123
{SSHA}FOJDrfbduQe6mWrz70NKVr3uEBPoUBf9

此代码将生成带有OpenLDAP可以使用的输出的加盐的SHA-1密码:

代码语言:javascript
复制
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Base64;

private static final int SALT_LENGTH = 4;

public static String generateSSHA(byte[] password)
        throws NoSuchAlgorithmException {
    SecureRandom secureRandom = new SecureRandom();
    byte[] salt = new byte[SALT_LENGTH];
    secureRandom.nextBytes(salt);

    MessageDigest crypt = MessageDigest.getInstance("SHA-1");
    crypt.reset();
    crypt.update(password);
    crypt.update(salt);
    byte[] hash = crypt.digest();

    byte[] hashPlusSalt = new byte[hash.length + salt.length];
    System.arraycopy(hash, 0, hashPlusSalt, 0, hash.length);
    System.arraycopy(salt, 0, hashPlusSalt, hash.length, salt.length);

    return new StringBuilder().append("{SSHA}")
            .append(Base64.getEncoder().encodeToString(hashPlusSalt))
            .toString();
}
票数 10
EN

Stack Overflow用户

发布于 2016-01-28 23:49:40

SSHA只是一颗种子的SHA。在标准java平台中,没有这样做的可能的解决方案(https://stackoverflow.com/a/3983415/1976843)。您需要实现自己的库或使用第三方库。我知道在spring security中有LdapPasswordEncoder

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35065529

复制
相关文章

相似问题

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