SQL SERVER SP 解密过程推导
在 SQL SERVER 里,已知微软在加密和解密存储过程时用的是 RC4 算法。下面是解密存储过程的解题思路,读者可以据此自己写个解密小程序。
想解密 SP ,其实就是解答下列一道证明题。 已知条件:
1. 已知需要解密的存储过程 SP_A 的密文为 Ma 。
2. 用一个已知明文的 SP_B 替换 SP_A ,这样得到 SP_B 的明文和密文分别为 Tb 和 Mb 。 求证: Ta=Ma ⊕Tb⊕Mb , Ta 即为需要解密的存储过程的明文。 证明过程:
1. 用 DAC 登录 SQLSERVER ,获取 Ma 和 Mb: SELECT imageval FROM sys . sysobjvalues where …
2. 由于RC4算法的加密和解密使用的是相同的秘钥,假设秘钥为K,那么:
a. Mb=Tb ⊕K
b. 根据异或运算公式,可以得到下列该存储过程加解秘时使用的秘钥为:
K=K ⊕0=K⊕ Tb ⊕ Tb=( K ⊕ Tb) ⊕ Tb=(Tb ⊕K ) ⊕ Tb=Mb ⊕ Tb
3. 因为 Ma=Ta ⊕K,则再次利用异或运算公式,得到下列推导结果:
Ta=Ta ⊕0=Ta⊕(K⊕K)=(Ta⊕K)⊕K=Ma⊕K=Ma⊕ Mb ⊕ Tb
4. 即 Ta=Ma ⊕Tb⊕Mb, Ta 就是需要解密的存储过程的明文。
dbtwin_sp_decrypt.txt
