2011년 3월 29일 화요일
해시값 생성
해시값은 digest 라고 불리기도 한다.
#!/usr/bin/ruby
require 'digest/md5'
s = "hello"
puts Digest::MD5.digest(s)
puts Digest::MD5.hexdigest(s)
puts Digest::MD5.base64digest(s) # 1.9.1
Cipher 를 사용한 AES 암호화 예제
# coding: utf-8
require 'openssl'
require 'digest'
# setup
password = 'password'
key = Digest::SHA256.digest password
# encrypt
encipher = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
encipher.encrypt
# key 길이가 같아야 한다. 길이가 클 경우 큰 부분이 무시되므로 안전하지 않다
# 여기서는 항상 같다
if encipher.key_len == key.length
encipher.key = key
else
raise "key length mismatch"
end
# iv 을 설정하지 않을 경우 기본값으로 null 값이 할당된다.
# iv = "\x00" * iv_len
encrypted_text = encipher.update('This is a message.')
encrypted_text << encipher.final
# decrypt
decipher = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
decipher.decrypt
decipher.key = key
decrypted_text = decipher.update(encrypted_text)
decrypted_text << decipher.final
사용하기 편리하게 String 클래스에 합체해보자.
# coding: utf-8
class String
# iv 을 설정하지 않을 경우 기본값으로 null 값이 할당된다.
# iv = "\x00" * iv_len
def encrypt password
encipher = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
encipher.encrypt
encipher.key = Digest::SHA256.digest password
encrypted_text = encipher.update(self)
encrypted_text << encipher.final
end
def decrypt password
decipher = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
decipher.decrypt
decipher.key = Digest::SHA256.digest password
decrypted_text = decipher.update self
decrypted_text << decipher.final
decrypted_text.force_encoding("utf-8")
end
end
encrypted_string = "암호화 테스트입니다.".encrypt("password")
decrypted_string = encrypted_string.decrypt("password")
p [encrypted_string, decrypted_string]
10여 년간 한글 문제 해결도 못하고 있는데 오픈소스 이 딴거 개나 줘버리라고 하세요. 오픈소스 개발자님, 관계자님 제가 하는 일에 제발 신경 끄세요. 도움 주지 마세요. 시간 빼앗겨 방해만 됩니다.
Translate
2018년 7월 21일 토요일
피드 구독하기:
댓글 (Atom)
응용 어플 끝글자 버그 잡는 거 진짜 개쉽습니다
그 동안 제가 끝글자 버그를 잡지 않고 방치한 이유 우선 책임, 의무가 없습니다. 제가 해당 어플 개발자도 아닐 뿐더러 오픈소스가 원래가 유지보수 의무, 보증 책임이 없습니다 . 이렇게 개떡 같은 게 오픈소스입니다. 전 과거 libhwp 하냐고...
-
달콤(Dalkom)은 리브레오피스에서 hwp 문서를 보기 위한 확장 기능입니다. libhwp 와 연동에 성공하여 hwp 문서에 있는 문자를 리브레오피스에서 볼 수 있습니다. 시간상의 이유 때문에 우선적으로 문자만 작업했습니다. 렌더링을 리브레오피...
-
그 동안 제가 끝글자 버그를 잡지 않고 방치한 이유 우선 책임, 의무가 없습니다. 제가 해당 어플 개발자도 아닐 뿐더러 오픈소스가 원래가 유지보수 의무, 보증 책임이 없습니다 . 이렇게 개떡 같은 게 오픈소스입니다. 전 과거 libhwp 하냐고...
-
제가 원래 개발자가 아니라 원래가 일반 사용자였습니다.과거 MS윈도우 품질이 개떡같아서 유닉스 사용하다가 유닉스가 비싸고 망해서 리눅스를 사용하고 있는 거고 리눅스 품질이 지금은 우수하지만 예전에는 문제가 진짜 많았죠. 그렇게 리눅스를 지금까지 사용해...
댓글 없음:
댓글 쓰기