Fredrickhu 帮忙指点下吧  

解决方案 »

  1.   

    发现问题首先出现在 Symmetric 上;
    尝试把A数据库Symmetric Key删除掉
    然后重新创建 Symmetric
    打开 Symmetric
    再解密之前被加密过的数据(删除前解密成功),
    发现解密失败.. 
      

  2.   

    B数据库的tT1是用之前的密钥进行加密的吗?像上面说的,直接写入tT1表是否有加密信息。
    另外,lz 可以使用链接服务器到A 使用你建好的密钥看能打开A中已经测试成功的表不?〉看代码都ok 应该没啥问题啊,。 
      

  3.   

    TT1 是从A数据库,把加密后的数据 直接 select ....Into ..  from DecTable;以下脚本请参考;-------A 数据库操作脚本
    --------把加密后的数据放到另外一个数据库
    select * into B..tt1 from t1
      

  4.   


    尝试了在B数据库 加载 Master Key、Certificate、重建Symmetric、Open Symmetric之后,
    新加密的数据解密成功;
    insert into TT1(ID,name,EncCol)
    select '01','Name1',ENCRYPTBYKEY(KEY_GUID(N'sym_t1'),'Name1')
    union all
    select '02','Name2',ENCRYPTBYKEY(KEY_GUID(N'sym_t1'),'Name2')go
    -----解密
    select 
    ID,
    name,
    EncCol,
    convert(varchar(100),DECRYPTBYKEY(EncCol))
    from tT1
    go--ID name EncCol (No column name)
    --1 Name1 0x00081464D132E746A4F089E8808D8CBB01000000C8B618D09D90C82444358AFD92ED8343B3FF5BC4EEB19E3457737294B91168C3 Name1
    --2 Name2 0x00081464D132E746A4F089E8808D8CBB0100000088C16F01D1FB2B01605EFFC55D9431B2F9DD18D790310572309ACBA35866EB6F Name2
    --1 Name1 0x00942180D4E9D54AA6E67FB31E2EC9F0010000000ADE0094C81644756578794D0CA9A392BB87851BD7295E222437BF71AAC871DB NULL
    --2 Name2 0x00942180D4E9D54AA6E67FB31E2EC9F001000000B49210295ED10F49DBB73799C7A530C8E2A668852CB9861F8622ADE90540FCF8 NULL
      

  5.   

    创建SYMMETRIC KEY的时候给IDENTITY_VALUE 和 KEY_SOURCE 指定相同的值就可以了本来哥是不想回答的
    不知道这次会不会给我分分