>

NetSuite 내에서 외부 시스템의 사용자 자격 증명을 보유하여 두 시스템 간의 통합을 구축하기 위해 사용자 지정 레코드를 만들고 있습니다. "비밀번호"필드 유형을 사용하여 다른 시스템의 비밀번호를 숨기고 그냥 붙잡을 수 없도록하고 싶습니다. 그러나이 필드 중 하나에 값을 입력하면 저장시 값이 16 진수 표현으로 변환되어 다른 시스템으로 전달하는 데 사용할 수 없습니다. 사용할 값을 디코딩하는 방법에 대한 정보를 찾을 수 없습니다. 내가 모르는 곳에 JavaScript 디코딩 기능이 있습니까? NetSuite의 설명서에는 실제로 아무것도 없습니다.


  • 답변 # 1

    비밀번호 필드는 값을 저장하지 않습니다. 레코드가 저장되면 SHA-1을 사용하여 값이 암호화되고 해시가 데이터베이스에 저장됩니다. 이것은 원래 값을 얻을 수 없지만 생성 된 해시를 얻을 수 있음을 의미합니다. 이 유형의 필드는 값을 저장하려고 할 때 값을 암호화하고 값을 얻으려고 할 때 해독하지 않습니다. 비밀번호 필드를 사용하여 해시를 저장 한 다음 다른 해시와 비교하여 동일한 값을 갖는지 확인해야합니다.

    예를 들어, 비밀번호 필드와 해시 82bb34c7f299fdf854b4aaeeb747cbcb8de0ad9 에 'myPassword'를 저장할 수 있습니다  생성 및 저장됩니다. 그런 다음 nlapiEncrypt 를 사용할 수 있습니다  SHA-1을 사용하여 값에서 해시를 생성하고 결과를 비교하는 방법. 이 경우 nlapiEncrypt('myPassword', 'sha1')   82bb34c7f299fdf854b4aaeeb747cbcb8de0ad9 를 반환 이는 해시가 동일하므로 'myPassword'는 비밀번호 입력란에 저장된 값입니다.

    암호화/암호 해독이 필요한 경우 AES와 같은 대칭 암호화 알고리즘과 키를 사용하여 텍스트 필드에 값을 암호화하고 저장해야합니다.

    nlapiEncrypt('myPassword', 'aes', '125C0B9A3D642927A0C60A6EABDF7948')

    마지막 인수가 키인 곳 :

    nlapiDecrypt('0e3d0eb7c1fed79402a5bd695aee5b11', 'aes', '125C0B9A3D642927A0C60A6EABDF7948')  첫 번째 인수는 암호화 된 값입니다.

관련 자료

  • 이전 sitecore8 - Sitecore 82 Glass Mapper 항목 작성 오류
  • 다음 MySQL (MariaDB 101) 찾기 및 문자열을 REGEX로 바꾸기/삭제