js 와 자바 중국어 md5 결과 불일치 문제 및 해결 방안

1540 단어
원본 링크:https://www.wallsay.com/article/A20181228113000181
저의 작은 역 에 오신 것 을 환영 합 니 다: 벽 은 일상 을 말 합 니 다.
오늘 사이트 기능 을 실현 할 때 중국어 만 나 오 면 js 와 자바 의 md5 결과 가 일치 하지 않 는 다 는 문 제 를 발견 했다.예 를 들 면 다음 과 같다.
영어 또는 숫자
    전단
hex_md5('difadgsdaifdf');
"095ca9aa1649d039a28afed77a26307e"

    백 엔 드
public static void main(String[] args){
        System.out.println(DigestUtils.md5Hex("difadgsdaifdf"));
        //  095ca9aa1649d039a28afed77a26307e
    }

js 와 자바 의 MD5 결과 가 같 음 을 알 수 있 습 니 다.
중국어
    전단
hex_md5('    ');
"e4532704b05cde222aafdf9ebd6e412f"

    백 엔 드
public static void main(String[] args){
        System.out.println(DigestUtils.md5Hex("    "));
        //  12eab8e5ad963e3de84bdd5132f3b228
    }

결과 가 뚜렷하게 일치 하지 않 음 을 알 수 있다
3. 해결 방법
저 는 개인 적 으로 js 와 자바 의 기본 인 코딩 이 일치 하지 않 아서 생 긴 문제 라 고 생각 합 니 다. 그래서 md5 전에 url Encode 를 통일 하 겠 습 니 다. 코드 는 다음 과 같 습 니 다.
전단
hex_md5(encodeURIComponent('    '))
"f83bf8677a718292edd9dedd404854cb"

백 엔 드
public static void main(String[] args){
        try {
            System.out.println(DigestUtils.md5Hex(URLEncoder.encode("    ","utf-8")));
            //  f83bf8677a718292edd9dedd404854cb
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

과연 md5 이후 의 결 과 는 일치 했다.

좋은 웹페이지 즐겨찾기