����λ�ã���ҳ > �����̳� > �̳� > ���ܵ����������ĵĴ�����У��

���ܵ����������ĵĴ�����У��

��Դ������������|��ʱ�䣺2024-04-28 09:45:47 |���Ķ���52��|�� ��ǩ�� ���� ���� �� |����������

�������ǽ���Ҫ̽�ֵ����ݼ��ܼ��������ݵı����Ƕ����ݼ��ܡ����ܵ�ͳ�ƣ���ѧԺ�ɵ�˵�����ǣ�ʹ��ij���㷨�ı�����Ϣԭ������̬��ʹ�����߼�ʹ��ȡ����ϢҲ��Ϊû�ж�Ӧ�Ľ��ܵķ���Ҳ�޷���ȡ����Ϣ����ʵ���ݡ�

����

���Һ�ϲ����һ����������ʵ�¼��ıࣩ�ĵ�Ӱ��ģ����Ϸ�����棺

¼ÓÃܵÄÒÕÊõ£ºÃÜÎĵĴ´½¨ºÍУÑé

�����Ŀ�ѧ��ͼ����������Ŷӣ����������ʱ�䣬�Ѿ���ţ����֮�������ҵ��¾��Ļ��������ŵ����ƽ��˵¾�ͨѶ����װ�� ��Ӣ���ꡱ��Ϊ�ڶ��������սȡ��ʤ�����µļ�ʵ�Ļ�������ô�¾�ʹ�õ�ͨѶ���ܾ�����һ�������ļ������������ǽ���Ҫ̽�ֵ����ݼ��ܼ��������ݵı����Ƕ����ݼ��ܡ����ܵ�ͳ�ƣ���ѧԺ�ɵ�˵�����ǣ� ʹ��ij���㷨�ı�����Ϣԭ������̬��ʹ�����߼�ʹ��ȡ����ϢҲ��Ϊû�ж�Ӧ�Ľ��ܵķ���Ҳ�޷���ȡ����Ϣ����ʵ���ݡ� �������Ϣ���ܵ�Ŀ�ģ�������Ϣ�ı��ܣ��������������ڽ��У��ֱ��ǣ�

  1. �ڿͻ��˽��б���
  2. �ڴ���ʱ���б��ܣ���ӣ�Ҳ����Ч��
  3. �ڷ���˽��б���

���ܵ�ǿ��

�ڰ�ȫ�����Ҷ�֪����ȫ�����ֵȼ��ģ���ͬӦ�õ�������Ϣ��Ҫ�Բ�ͬ��������Ҫ�İ�ȫ�ȼ�Ҳ��ͬ�����������û�о��Եİ�ȫ����ȫ�ȼ���������ֹ�����������κΰ�ȫ�ֶζ������ƽ⣨ֻҪ�����㹻�ijɱ�������Ҫ���߼���İ�ȫ�ȼ�����Ҫ�������ߵijɱ������������������ȡ����糣���ļ��ܼ�������˵����һ�㡣���ܵ�ǿ�ȴӵ͵��ߣ��ֱ��У�

һ����ϣ�㷨������ļ����ֶΣ�����������ʹ�� MD5 �ȹ�ϣժҪ�㷨���в�����Ĺ�ϣ������м��ܣ�ʾ����

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Hash {
    public static void main(String[] args) {
        String text = "yourPassword";
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] hashBytes = md.digest(text.getBytes());
            StringBuilder hexString = new StringBuilder();
            for (byte b : hashBytes) {
                hexString.append(String.format("%02x", b));
            }
            System.out.println("MD5 Digest: " + hexString.toString());
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}

��������

MD5 Digest: 65a8e27d8879283831b664bd8b7f0ad4

���ַ�ʽ����ȫ�ȼ��ͣ����������ױ��ʺ����Ԥ�Ƚ���ժҪ�õĹ�ϣ�������з������룩�ƻ���

������ϣ�㷨���Σ���ǿ�˻����Ĺ�ϣ�㷨������ salt ��ֵ������ϣ���㣬������Ч�����ʺ���Ĺ�����ʾ����

private static final String SALT = "YourFixedSalt";  // �̶���ֵ

private static String getSecurePassword(String passwordToHash) {
    String generatedPassword = null;
    try {
        MessageDigest md = MessageDigest.getInstance("MD5");
        // ���ӹ̶���ֵ
        md.update(SALT.getBytes());
        byte[] bytes = md.digest(passwordToHash.getBytes());
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < bytes.length; i++) {
            sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
        }
        generatedPassword = sb.toString();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return generatedPassword;
}

���ַ�����ȱ���ǣ��������ֵй¶����ô������������Ҳ��һ�������׵����飬���������뼴ʹ������ֵ����ǿ�������IJʺ����ǰ������Ҳ����һ�����¡�

������̬�μӹ�ϣ����̬��ֵ��һ���ص㣬����ÿ����ֵֻʹ��һ�Σ����ַ�ʽ�е��������ϲ���Ե��Ǽ�����㣬���Ǽ������Ŀںž��ǣ���ÿ��ֻ��һ�Σ������Ͼ��ǻ��Ѹ��ߵijɱ��������ߵİ�ȫ��ʾ����

public static void main(String[] args) {
    // �����ܵ�����
    String passwordToHash = "yourPassword";
    // ���ɶ�̬��ֵ
    byte[] salt = getSalt();
    // ��ȡ���εİ�ȫ����
    String securePassword = getSecurePassword(passwordToHash, salt);
    System.out.println("Secure Password: " + securePassword);
    System.out.println("Salt: " + bytesToHex(salt));
}

// ʹ��MD5�������룬�������ֵ
private static String getSecurePassword(String passwordToHash, byte[] salt) {
    try {
        // ����MD5ժҪ�㷨�� MessageDigest ����
        MessageDigest md = MessageDigest.getInstance("MD5");
        // ����ֵ���ӵ�ժҪ��
        md.update(salt);
        // �������Ĺ�ϣ����
        byte[] hashedBytes = md.digest(passwordToHash.getBytes());
        // ����ϣֵת��Ϊʮ�������ַ���
        return bytesToHex(hashedBytes);
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
        return null;
    }
}

// ����һ���������ֵ
private static byte[] getSalt() {
    SecureRandom sr = new SecureRandom();
    byte[] salt = new byte[16];
    sr.nextBytes(salt);
    return salt;
}

// ���ֽ�����ת��Ϊʮ�������ַ���
private static String bytesToHex(byte[] bytes) {
    StringBuilder sb = new StringBuilder();
    for (byte b : bytes) {
        sb.append(String.format("%02x", b));
    }
    return sb.toString();
}

��̬��ֵ���Խ���̶���ֵ�����ķ��գ�����ɿͻ��˶�̬������ֵ������˽��м��㣬��ô �ͻ��������ȫ�İѶ�̬��ֵ���������� ��������һ�����⣬��Ȼͨ�ŵ��ŵ��ǰ�ȫ�ɿ��ģ���ô���䶯̬��ֵ��û�����壬��Ȼͨ���ŵ��Dz���ȫ�ģ���ô���䶯̬��ֵҲ�б������ķ��գ�Ҳû�����塣���ֱ����һ�� �����м����������е��� �����⡣

�ģ����� HTTPS �ŵ���HTTPS ���ܴ�����Ŀǰ�������������������� HTTPS ��ȫ�ŵ���Ҳ�����ܸ������ǣ�Ҳ�����һϵ�е����⣬������Ϊ�����������ʹ����ǩ��֤�鵼����Ϣй¶���գ������֤����²���ʱ��֤����ڵ����⣬���� TLS �汾���ͻ�����ѧ�׼�ѡ�ò�����������ǿ�Ȳ���ķ��ա�

�壺���õ� MFA���������еȻ������漰���׵�ʱ�򣬻�Ҫ��ͻ�ʹ�����õ� U �ܣ����� MFA���ֻ���֤�룬����ʶ��������豸����ǿ��ȫ�ȼ���һЩ�ؼ���ҵ���߾��»��������Ὺ��һ���빫�������Ķ������ڲ����������Ϣͨ������֤��Ϣ�İ�ȫ��

¼ÓÃܵÄÒÕÊõ£ºÃÜÎĵĴ´½¨ºÍУÑé

ͨ������ʾ������Ҫ֤�������ڰ�ȫ�ͱ��ܶ��ԣ� �����������û�о��Եİ�ȫ����Ҫ���߼���İ�ȫ�ȼ�����Ҫ�������ߵijɱ� ����Ȼ���˻����̵�˵�����Ұε����߲������ȫ����Ȼ��һ���ĺ����ԣ����������ʽ�İ�ȫû�����壬���Բ����������۵ķ�Χ֮�ڡ�

�ͻ��˼���

���ڴ����Ӧ�ö��ԣ�Ҫ��֤��Ϣͨ�ŵİ�ȫ���ͻ���ֻ������ HTTPS ��һ����������ѡ�񡣶��Ҷ�������������������Ϣ���ԣ�������Ϊ������ڿͻ��˾Ϳ��Ծ��촦�������Ծ��󻼣�ԭ�����£�

  1. ����˴洢�������룬���ݿⱻ���Ƶ����û�����й¶�������Ѿ��ż����ʵģ����ұ��Ͽ������صĻ��ǹ���ij���ļ�������������
  2. ����˰��������뵽��־����־�ļ�й¶���߱��ɼ��������û�����й¶�ȵ�
  3. �����м��˹��������������豸���ٳ֣���Ϣ����ȡ�������������벻��й¶

��֮��������������ڿͻ��˾ͱ��������Խ�紦��Խ�ã���Ҫ�����Ĵ�������ˣ�����ķ��մ��ڷ����Ͽͻ��˳������� HTTPS �⣬��Ҫ�������������ժҪ�������Ӷ���֤���еİ�ȫ�����ڿͻ���Ӧ����ν��м��ܣ����ǽ�������ʼ���ۡ�

���ĵĴ�����У��

֮ǰ˵������Ϣ��ȫ����û�о��Եİ�ȫ����Ҫ��ߵİ�ȫ�ȼ���Ҫ���Ķ��İ�ȫ�ɱ������ڴ�����ձ��Ӧ�ö��ԣ����� HTTPS ����ͨ�����ڰ�ȫ�ȼ��Ͱ�ȫ�ɱ�֮���һ�����ʵ�ƽ��㡣���Խ��ʵ�����ѡ����ʵķ����ͺá�

BCrypt �㷨

�������������ζ����Ľ��й�ϣ���㣬������ζ��б��ʺ�������ƽ�Ŀ��ܡ�Ϊ�˽��������⣬��������ϣ���������������һ��������ķ���������ϣ�������ڹ�ϣ����� salt ��ֵ֮������һ������ʱ�� cost �IJ���������ϣͨ���ӳ���ϣ����ʱ������ĵ���Դ����Ч�ı�������ʺ���ȱ����ƽ�Ĺ������ṩϵͳ�İ�ȫ�ԣ� BCrypt �㷨����һ�����д����Ե�����ϣ������ʾ����

public class BCryptExample {

    public static void main(String[] args) {
        // ���� BCryptPasswordEncoder ʵ��������ָ���������ӣ�Ĭ���� 10
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();

        // ��������
        String originalPassword = "yourPassword";
        String encodedPassword = encoder.encode(originalPassword);
        System.out.println("Encoded Password: " + encodedPassword);

        // ������
        boolean isMatch = encoder.matches(originalPassword, encodedPassword);
        System.out.println("Password matched: " + isMatch);
    }
}

������ǰ�����ϣ����� cost ����Ϊ 0.1 ���ʱ�䣬��ô��������10λ��Сд��ĸ��������ɵ������루��62���ַ������й�ϣ����һ�Σ���Լ��Ҫ 8.39��10168.39��1016 �롣����ڴ�Լ 971.4 ���죬���ߴ�Լ 2661 �������ʱ�䡣�����ʹ�� BCrypt ���ʵ��Ĺ������ӿ��Լ��������ƽ�������Ѷȣ�ʹ�ñ����ƽⷽ����ò����С�������Ҫע����ǣ�

BCrypt ���ڶԼ�����Դ��ʱ���кܴ�����ģ������Խ��ͷ�������ܣ�ֻ�����ڿͻ��˽�������ϣ����

���ĵĴ���

����������Ϣ���ܽ׶Σ����Բο����·������д�����

¼ÓÃܵÄÒÕÊõ£ºÃÜÎĵĴ´½¨ºÍУÑé
  1. �û��������룬�ͻ��˽����û�����������
  2. �ͻ��˶�����ʹ�ù̶���ֵ + BCrypt ����ϣ���м��ܺ󷢸������
  3. ����˽������ģ�Ȼ�����������ֵ�������Ľ��ж��μ���
  4. ����˽�����κͶ������Ĵ洢�����ݿ�

���ĵ�У��

�ڶ����Ľ���У��׶Σ����Բο����·������д�����

¼ÓÃܵÄÒÕÊõ£ºÃÜÎĵĴ´½¨ºÍУÑé

˵����

  1. �û��������룬�ͻ����յ��û�����������
  2. �ͻ��˶�����ʹ�ù̶���ֵ + BCrypt ����ϣ���м��ܺ󷢸������
  3. ����˽��տͻ������ģ�Ȼ������ݿ�ȡ������κͶ�������
  4. �����ʹ������ζԿͻ������Ľ��м��ܣ�Ȼ��������Ķ������Ľ��жԱ�
  5. ����������ͬ�����ʾ����У��ͨ��
С���Ƽ��Ķ�

�������������Ľ�Ϊ������Ϣ����������������ͬ���޹۵��֤ʵ��������

�����Ƶ����

����

ͬ������

����

ɨ��ά�����������ֻ��汾��

ɨ��ά����������΢�Ź��ںţ�

��վ�������������������ϴ��������ַ���İ�Ȩ���뷢�ʼ�[email protected]

��ICP��2022002427��-10 �湫��������43070202000427��© 2013~2025 haote.com ������