UFN_ENCRYPT_TEXTTOXML

Return

Return Type
xml

Parameters

Parameter Parameter Type Mode Description
@PLAINTEXT nvarchar(max) IN

Definition

Copy


        CREATE function dbo.UFN_ENCRYPT_TEXTTOXML
        (
            @PLAINTEXT nvarchar(max)
        )
        returns xml
        as begin
            --Although max length is 4000 but while testing exact max length in SQL Server 2014 is 3971

            --After that text gets truncated by EncryptByKey function so for safe side taking 3900 as max base value

            declare @LINEBREAK int = 3900;
            declare @ENCRYPTEDSEGMENT varbinary(max);
            declare @LINE int = 0;
            declare @PLAINSEGMENT nvarchar(max);
            declare @SEGMENTSTABLE table (LINE int, PLAINTEXT nvarchar(max), ENCRYPTEDTEXT varbinary(max));
            declare @XML xml;

            while len(@PLAINTEXT) > 0
            begin
                set @LINE = @LINE + 1;
                set @PLAINSEGMENT = left(@PLAINTEXT, @LINEBREAK);
                set @ENCRYPTEDSEGMENT = EncryptByKey(Key_GUID('sym_BBInfinity'), @PLAINSEGMENT);
                insert into @SEGMENTSTABLE (LINE, PLAINTEXT, ENCRYPTEDTEXT) values (@LINE, @PLAINSEGMENT, @ENCRYPTEDSEGMENT);
                set @PLAINTEXT = SUBSTRING(@PLAINTEXT, @LINEBREAK + 1, len(@PLAINTEXT));
            end

            set @XML = 
            (
                select 
                    LINE as '@sequence'
                    ENCRYPTEDTEXT as '*' 
                from @SEGMENTSTABLE 
                order by LINE 
                for xml path ('segment'), root ('segments')
            );

        return @XML;
        end