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 하냐고...
-
인터넷에서 웹 브라우저로 파일을 받으면 서버 측의 잘못된 설정으로 인하여 한글 파일 이름이 이상하게 되는 경우가 많다. cp949 코드가 utf-8 로 둔갑된 경우 사용자 컴퓨터 환경이 utf-8 환경이라면 그 파일 이름 자체가 utf-8 이기 ...
-
예전에 dasom 개발하면서 많은 글을 작성했었는데 당시 drupal 로 홈페이지를 사용했었는데 drupal 관리를 못해서 데이터를 다 날려먹었습니다. 복구가 안 되요. 그래서 그 때부터 그냥 블로거에 글쓰고 있는 겁니다. 블로거는 구글에서 관리를 하...
-
그 동안 제가 끝글자 버그를 잡지 않고 방치한 이유 우선 책임, 의무가 없습니다. 제가 해당 어플 개발자도 아닐 뿐더러 오픈소스가 원래가 유지보수 의무, 보증 책임이 없습니다 . 이렇게 개떡 같은 게 오픈소스입니다. 전 과거 libhwp 하냐고...
댓글 없음:
댓글 쓰기