홈>
Haskell에서 vigenére 암호를 성공적으로 구현했지만 공백도 이동하고 있습니다. 문자 만 소문자로 바꾸려면 어떻게해야합니까?
예를 들어, "abc"를 키로 사용하여 "hello rita"를 암호화하고 싶다고 가정하겠습니다. "hfnlp rjva"대신 "hfnlpprjva"를 인쇄하고 있습니다.
기본 방법은 다음과 같습니다.
vigenere_encrypt :: String -> String -> String
vigenere_encrypt key plaintext = ints2text n
where n = map (`mod` 26) (zipWith (+) keyCycle intPlainText)
keyCycle = (cycle(text2ints key))
intPlainText = text2ints plaintext
보조 기능은 다음과 같습니다.
--lowercase letter to int conversion
let2int :: Char -> Int
let2int c = ord c - ord 'a'
--int to lowercase letter conversion
int2let :: Int -> Char
int2let n = chr(ord 'a' + n)
text2ints :: String -> [Int]
text2ints xs = map (let2int) xs
ints2text :: [Int] -> String
ints2text xs = map (int2let) xs
어떤 제안?
- 답변 # 1
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- JavaScript 변수를 HTML div에 '출력'하는 방법
- python - 문자열에서 특정 문자 제거
아래 스크립트는 예상 결과를 산출합니다 :
참고 : 코드는 공백을 건너 뛰지 않고 덮어 씁니다 ... 실제로 말하면 공백의 수가 암호화 된 문자열에 영향을 미칩니다. 그렇지 않으면 프로그램이 약간 더 복잡해집니다.