Clojure에서 비밀 생성
Python에 익숙하다면 Python의 표준 라이브러리에서 secrets 모듈에 대해 들어봤을 것입니다.
음, secrets.clj은 Python의 비밀과 같지만 Clojure의 경우 암호, 계정 인증, 보안 토큰 및 관련 비밀과 같은 데이터를 관리하는 데 적합한 암호학적으로 강력한 난수를 생성하도록 설계된 라이브러리입니다.
설치
secrets.clj
파일에 project.clj
를 추가합니다.[likid_geimfari/secrets "1.1.1"]
그런 다음
lein deps
를 실행하여 설치합니다.이제 준비가 되었습니다.
(ns example.core
(:require [secrets.core]
[secrets.tools]
[secrets.constants]))
용법
일반적인 사용 사례는 다음과 같습니다.
secrets.core/randbelow(n)
이 함수는
[0, n)
범위의 보안 임의 정수를 생성합니다. 여기서 n
는 배타적 상한입니다.예시:
user=> (secrets.core/randbelow 9999)
7612
secrets.core/choice(seq)
이 함수는 비어 있지 않은 시퀀스에서 임의의 요소를 반환하거나 시퀀스가 비어 있으면 예외를 발생시킵니다.
user=> (secrets.core/choice ["bob" "alice" "eve"])
"eve"
secrets.core/choices(seq)
secrets.core/choice
와 같지만 이 함수는 시퀀스에서 선택한 임의의 요소 목록을 반환합니다.(secrets.core/choices ["bob" "alice" "eve"] 2)
("eve" "alice")
secrets.core/token-hex(nbytes)
16진수 형식의 보안 임의 문자열을 생성합니다. 문자열에는
nbytes
임의의 바이트가 있으며 각 바이트는 두 개의 16진수로 변환됩니다.n바이트가 제공되지 않으면 적절한 기본값인 32가 사용됩니다.
user=> (secrets.core/token-hex(64))
"3a3e8e6636000dd3b7d39aa4316935f27c2f013d768f0c00f309efb453f34dbc673060db2cd8af288494892848"
secrets.core/token-urlsafe(nbytes)
URL 안전 형식으로 보안 임의 문자열을 생성합니다.
(defn generate-password-recovery-url [n]
(str "https://mydomain.com/reset=" (secrets.core/token-urlsafe n)))
(generate-password-recovery-url 64)
"TItm04q8by00MRMcNBt7I3Yx-wSxyUa79isRLNyQJCd8K75RnqUahwcWA_rURBt1clknJiRGrubapGaUrEUnSw"
secrets.core/token-bytes(nbytes)
바이트 형식의 보안 임의 문자열을 생성합니다.
(secrets.core/token-urlsafe(16))
#object["[B" 0x3b2454e9 "[B@3b2454e9"]
토큰은 몇 바이트를 사용해야 합니까?
무차별 대입 공격으로부터 안전하려면 토큰에 충분한 임의성이 있어야 합니다.
토큰에 필요한 임의의 비트 수는 애플리케이션에 따라 다르지만 256비트
암호학적으로 강력한 것으로 간주됩니다.
개인적으로 64바이트(
512 bits
)를 사용하는 것이 좋습니다.연결
원본 게시물: https://isaak.dev/2022/10/generating-secrets-in-clojure
텔레그램 채널: https://t.me/software_dev_channel
Reference
이 문제에 관하여(Clojure에서 비밀 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/likid_geimfari/generating-secrets-in-clojure-53g2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)