유지보수 중인 프로젝트들의 DB접속정보 암호화 요청으로 인하여 전자정부 3.8이상의 버전은 crypto 간소화서비스를, 3.7이하 버전에는 AES방법, ASP는 base64방식을 사용하여 암호화를 하였다.
첫번째 방식인 crypto방식
[암호화]DB접속정보 암호화하기1(crypto)
유지보수 중인 프로젝트들의 DB접속정보 암호화 요청으로 인하여 전자정부 3.8이상의 버전은 crypto 간소화서비스를, 3.7이하 버전에는 AES방법, ASP는 base64방식을 사용하여 암호화를 하였다. 첫번째
soondevnote.tistory.com
두번째 방식인 AES방식
[암호화]DB접속정보 암호화하기2(AES)
유지보수 중인 프로젝트들의 DB접속정보 암호화 요청으로 인하여 전자정부 3.8이상의 버전은 crypto 간소화서비스를, 3.7이하 버전에는 AES방법, ASP는 base64방식을 사용하여 암호화를 하였다. 첫번째
soondevnote.tistory.com
세번째로는 ASP에서 사용한 BASE64 방식이다
1.cmmBaseDb.asp 추가
<%
'/////////////////////////////////////////////////
'/// 어떤분이 외국소스에서 구해 인터넷에 올려놓은 소스입니다.
'/// 쿠키에 많이 사용하더군요.
'/////////////////////////////////////////////////
' OPTION EXPLICIT
const BASE_64_MAP_INIT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
dim nl
' zero based arrays
dim Base64EncMap(63)
dim Base64DecMap(127)
'/////////////////////////////////////////////////
'/// must be called before using anything else
'/// 다른 작업이전에 먼저 호출해야하는 함수입니다.
'/////////////////////////////////////////////////
public SUB initCodecs()
' init vars
nl = "<P>" & chr(13) & chr(10)
' setup base 64
dim max, idx
max = len(BASE_64_MAP_INIT)
for idx = 0 to max - 1
' one based string
Base64EncMap(idx) = mid(BASE_64_MAP_INIT, idx + 1, 1)
next
for idx = 0 to max - 1
Base64DecMap(ASC(Base64EncMap(idx))) = idx
next
END SUB
'/////////////////////////////////////////////////
'/// encode base 64 encoded string
'/// Base64로 인코딩하는 함수입니다.
'/////////////////////////////////////////////////
public function base64Encode(plain)
if len(plain) = 0 then
base64Encode = ""
exit function
end if
dim ret, ndx, by3, first, second, third
by3 = (len(plain) \ 3) * 3
ndx = 1
do while ndx <= by3
first = asc(mid(plain, ndx+0, 1))
second = asc(mid(plain, ndx+1, 1))
third = asc(mid(plain, ndx+2, 1))
ret = ret & Base64EncMap( (first \ 4) AND 63 )
ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) AND 15 ) )
ret = ret & Base64EncMap( ((second * 4) AND 60) + ((third \ 64) AND 3 ) )
ret = ret & Base64EncMap( third AND 63)
ndx = ndx + 3
loop
' check for stragglers
if by3 < len(plain) then
first = asc(mid(plain, ndx+0, 1))
ret = ret & Base64EncMap( (first \ 4) AND 63 )
if (len(plain) MOD 3 ) = 2 then
second = asc(mid(plain, ndx+1, 1))
ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) AND 15 ) )
ret = ret & Base64EncMap( ((second * 4) AND 60) )
else
ret = ret & Base64EncMap( (first * 16) AND 48)
ret = ret & "="
end if
ret = ret & "="
end if
base64Encode = ret
END function
'/////////////////////////////////////////////////
'/// decode base 64 encoded string
'/// Base64로 디코딩하는 함수 입니다.
'/////////////////////////////////////////////////
public function base64Decode(scrambled)
if len(scrambled) = 0 then
base64Decode = ""
exit function
end if
' ignore padding
dim realLen
realLen = len(scrambled)
do while mid(scrambled, realLen, 1) = "="
realLen = realLen - 1
loop
dim ret, ndx, by4, first, second, third, fourth
ret = ""
by4 = (realLen \ 4) * 4
ndx = 1
do while ndx <= by4
first = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
third = Base64DecMap(asc(mid(scrambled, ndx+2, 1)))
fourth = Base64DecMap(asc(mid(scrambled, ndx+3, 1)))
ret = ret & chr( ((first * 4) AND 255) + ((second \ 16) AND 3))
ret = ret & chr( ((second * 16) AND 255) + ((third \ 4) AND 15) )
ret = ret & chr( ((third * 64) AND 255) + (fourth AND 63) )
ndx = ndx + 4
loop
' check for stragglers, will be 2 or 3 characters
if ndx < realLen then
first = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
ret = ret & chr( ((first * 4) AND 255) + ((second \ 16) AND 3))
if realLen MOD 4 = 3 then
third = Base64DecMap(asc(mid(scrambled,ndx+2,1)))
ret = ret & chr( ((second * 16) AND 255) + ((third \ 4) AND 15) )
end if
end if
base64Decode = ret
END function
'/////////////////////////////////////////////////
'/// initialize
'/// 초기화
'/////////////////////////////////////////////////
call initCodecs
dim inp, pnp
' inp = "username"
' pnp = "password"
' Response.write base64Encode(inp) & "<br/>"
' Response.write base64Encode(pnp) & "<br/>"
' Response.write base64Decode(base64Encode(inp)) & "<br/>"
' Response.write base64Decode(base64Encode(pnp)) & "<br/>"
%>
코드 제일 하단에 Encode를 통하여 DB접속정보 를 암호화한다.
2. globals.asp 추가
Const db_user = "암호화username" '// db 로그인 계정
Const db_passwd = "암호화password" '// db 로그인 암호
Const db_source = "127.0.0.1, 1433" '// db ip
Const db_name = "dbName" '// db 이름
1번 작업에서 암호화된 값들을 입력한다.
3. 1번 asp파일의 base64Decode를 사용하여 디코드하여 연결한다.
crypto암호화방법 확인하기
[암호화]DB접속정보 암호화하기1(crypto)
유지보수 중인 프로젝트들의 DB접속정보 암호화 요청으로 인하여 전자정부 3.8이상의 버전은 crypto 간소화서비스를, 3.7이하 버전에는 AES방법, ASP는 base64방식을 사용하여 암호화를 하였다. 첫번째
soondevnote.tistory.com
AES암호화방법 확인하기
[암호화]DB접속정보 암호화하기2(AES)
유지보수 중인 프로젝트들의 DB접속정보 암호화 요청으로 인하여 전자정부 3.8이상의 버전은 crypto 간소화서비스를, 3.7이하 버전에는 AES방법, ASP는 base64방식을 사용하여 암호화를 하였다. 첫번째
soondevnote.tistory.com
'개발노트' 카테고리의 다른 글
[apache2] 아파치 Mod_jk 설정 (0) | 2024.05.24 |
---|---|
[mysql ] Ibatis procedure OUT 파라미터 받기 (0) | 2024.04.26 |
[암호화]DB접속정보 암호화하기2(AES) (0) | 2024.02.28 |
[암호화]DB접속정보 암호화하기1(crypto) (0) | 2024.02.23 |
[NICE인증] IBMJCE에러 com.ibm.crypto.provider.IBMJCE (2) | 2024.01.31 |