c# DPAPI必须声明一个主体,因为它没有被标记为抽象

本文关键字:因为 抽象 记为 主体 一个 DPAPI 声明 | 更新日期: 2023-09-27 17:51:18

我不知道为什么我得到以下错误,"必须声明一个机构,因为它没有标记抽象,外部或部分"。我实际上遵循以下网站的指南'http://www.overclock.net/t/1293731/windows-data-protection-api-c-and-c'

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
namespace DataProtection 
{
    class Program
    {
        public static byte[] Protect(byte[] userData, byte[] optionalEntropy, DataProtectionScope scope);
        public static byte[] Unprotect(byte[] encryptedData, byte[] optionalEntropy, DataProtectionScope scope);
        static void Main(string[] args)
        {
            string plainText = "I have less headaches in the managed world!";
            byte[] plainTextBytes = Encoding.Unicode.GetBytes(plainText);
            /* Call the method. The return value is a byte array of ENCRYPTED data */
            byte[] encrypted = ProtectedData.Protect(
                    plainTextBytes,                         /* our byte array to be encrypted */
                    null,                                           /* we can pass additional entropy in the form of a byte array (optional) */
                    DataProtectionScope.CurrentUser /* can also pass DataProtectionScope.LocalMachine */
            );
            /* Here we might write out the bytes in "encypted" to disk */

        }
    }
}

c# DPAPI必须声明一个主体,因为它没有被标记为抽象

如果Program不是抽象类(也不应该是),则必须实现Protect和Unprotect。然而,看起来你并没有使用它们,所以也许只是删除它们?

事实上,这两个方法是抽象原型。

在这里看到一个更好的例子:http://msdn.microsoft.com/en-us/library/system.security.cryptography.protecteddata.aspx

除了Jeff的注释之外,从您的代码的其余部分来看,看起来您并不打算拥有自己的ProtectUnprotect方法,而是调用ProtectedData类中的方法。如果是这种情况,您不需要在类中为这些方法声明任何内容。