sql >> データベース >  >> RDS >> Sqlserver

DECRYPTBYASYMKEY() が期待値を返さない

    そうです、何かを暗号化すると、それはバイト配列として扱われ、そのように返されます。 0x47 は G、72 は r などです。

    DecryptByAsmKey のドキュメントを調べると、 戻り値の型は varbinary で、最大サイズは 8,000 バイトです。また、この例では変換に気付くでしょう。

    したがって、文字列を暗号化および復号化する場合は、そのように変換する必要があります

    SELECT CONVERT(varchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'), 
        EncryptByAsymKey(AsymKey_ID('myasymkey'), 
        'Greg'), 
        N'123pass!'));
      

    また、入力に応じて varchar(max) または nvarchar(max) に変換していることを確認する必要があることに注意してください。もし試したら

    SELECT CONVERT(nvarchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'), 
        EncryptByAsymKey(AsymKey_ID('myasymkey'), 
        'Greg'), 
        N'123pass!'));
      

    'Greg' の入力は varchar であるため、間違っている可能性があります。



    1. MySQLの主キー列の名前を変更するにはどうすればよいですか?

    2. SQLITEは読み取り専用データベースをバージョン1から2にアップグレードできません

    3. UTF-8の代わりにwindows-1252を使用することに問題があります

    4. 非正規化された列を個別のレコードに選択しますか?