" RNGCryptoServiceProvider不包含GetNonZeroBytes的定义"

时间:2012-11-24 00:37:32

标签: c# windows-phone-7 compiler-errors

我有以下代码。该功能是生成特定大小的随机ID。但是我不断收到错误消息

  

'System.Security.Cryptography.RNGCryptoServiceProvider'不包含'GetNonZeroBytes'的定义,也没有扩展方法'GetNonZeroBytes'接受第一个类型为'System.Security.Cryptography.RNGCryptoServiceProvider'的参数(你是否遗漏了)?使用指令或汇编引用)

我正在尝试在.NET中使用加密库,根据msdn,这是可以在这种情况下使用的功能之一,但由于某种原因,我不断收到此错误。

有人可以帮忙吗?

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Security.Cryptography;
using System.Text;

namespace ONeRESPONSEAPP
{
    public class IdGenerator
    {
        public static string GetUniqueKey(int maxSize)
        {
            char[] chars = new char[45];
            chars =
            "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray();
            byte[] data = new byte[1];
            RNGCryptoServiceProvider identity= new RNGCryptoServiceProvider();
            identity.GetNonZeroBytes(data);
            data = new byte[maxSize];
            identity.GetNonZeroBytes(data);
            StringBuilder result = new StringBuilder(maxSize);
            foreach (byte b in data)
            {
                result.Append(chars[b % (chars.Length)]);
            }
            return result.ToString();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

System.Security.Cryptography.RNGCryptoServiceProvider.GetNonZeroBytes()not supported by Windows Phone 7。 您可能希望使用RNGCryptoServiceProvider.GetBytes(),而且加密也很强。