재우니의 블로그

 

ms-sql 에서 base64 처리하는 함수

 

여기서 varchar 값으로 해서 , varchar 로 base64 암호화 처리하는 부분이 있습니다.

nvarchar 로 처리하면 서로 다른 값이 나올 수 있으므로 참고하시기 바랍니다.

 

** BASE64 인코딩 함수

 

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create FUNCTION [dbo].[Base64Encode] ( @plain VARCHAR(max) )
RETURNS VARCHAR(MAX)
BEGIN
 

declare @encoded VARCHAR(max)
 
SELECT @encoded = CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:column("bin")))', 'VARCHAR(MAX)')
FROM (
 SELECT CAST(@plain AS VARBINARY(MAX)) AS bin
 ) AS bin_sql_server_temp;
 
RETURN @encoded
 
END

 

** BASE64 디코딩 함수

 

CREATE FUNCTION [dbo].[Base64Decode] (
 @Encoded VARCHAR(max)
)
RETURNS VARCHAR(MAX)
BEGIN
 
declare @Decoded VARCHAR(max)
SELECT @Decoded = CAST(CAST(N'' AS XML).value('xs:base64Binary(sql:column("bin"))', 'VARBINARY(MAX)') AS VARCHAR(MAX))
FROM (
 SELECT CAST(@Encoded AS VARCHAR(MAX)) AS bin
 ) AS bin_sql_server_temp;
 
RETURN @Decoded
 
END

 

**  실행하기

 

select dbo.[Base64Encode]('test123')
select dbo.[Base64Decode]('dGVzdDEyMw==')