确定列是加密密钥还是纯文本

时间:2013-06-06 09:30:40

标签: sql sql-server sql-server-2008 encryption aes

我们在SQL Server表中有一个类型为varchar(25)的列,当它们应该使用AES加密时,错误地插入了纯文本值。我们将从数据库中删除纯文本值。计划是验证字段的块大小,但这会导致留下一些未加密的值。是否还有其他标准可以检查以确定有效的加密数据?

我们需要它是一个仅限T-SQL的解决方案。

更新

只是挖了一点,它从网络服务中获取价值。此Web服务使用ASP.Net中的AES对它们进行加密。它接受返回的字节数组,然后使用此方法将字节数组转换为字符串:

static public string ByteArrToString(byte[] byteArr)
{
  byte val;
  string tempStr = "";
  for (int i = 0; i <= byteArr.GetUpperBound(0); i++)
  {
    val = byteArr[i];
    if (val < (byte)10)
      tempStr += "00" + val.ToString();
    else if (val < (byte)100)
      tempStr += "0" + val.ToString();
    else
      tempStr += val.ToString();
  }
  return tempStr;
}

为清楚起见,我应该说我最初并没有写这段代码!

干杯

1 个答案:

答案 0 :(得分:0)

不是真的,特别是因为编码方法看起来不正常。 base64编码数据更常见,这使得它非常独特。这实际上取决于未加密数据是由多少容易确定数据是否被加密 - 例如,它是单词,数字,是否有空格等(因为编码数据没有空格)

您的编码数据看起来都是数字表示为字符串,因此根据数据的长度,您可以看到您的列是否会转换为BIGINT。

不确定最好的方法,但这里有一个答案可以帮助你在T-SQL中“尝试演员”StackOverflow-8453861