草庐IT

安全加密

全部标签

c# - GUID 是(临时)加密的好 key 吗?

我正在生成加密key以使用Rijndael(AES)encryptionalgoritm加密一些敏感数据.我正在使用guid作为key生成器。这些key是否足够“强大”?注意:只敏感20分钟。 最佳答案 没有。可以预测GUIDkey,至少是那些由.NET/WinAPI生成的key。还要记住,GUID甚至没有真正的128位随机性,因为版本号是固定的。这首先会为您提供一个非常弱的key。更糟糕的是,GUID算法的多个版本都存在可预测性问题。关键是GUID不是随机创建的,而是遵循一定的规则,使GUID几乎不可能发生冲突。正如评论中所讨论的

C# 和 bool 的线程安全

我对这个主题很困惑——读取/切换bool值是否是线程安全的。//caseone,nothingprivateboolv1;publicboolV1{get{returnv1;}set{v1=value;}}//casetwo,withInterlockedonsetprivateintv2;publicintV2{get{returnv2;}set{Interlocked.Exchange(refv2,value);}}//casethree,withlockonsetprivateobjectfieldLock=newobject();privateboolv3;publicbool

c# - 何时在线程安全锁定代码中使用 'volatile' 或 'Thread.MemoryBarrier()'? (C#)

我什么时候应该使用volatile/Thread.MemoryBarrier()来保证线程安全? 最佳答案 当您想跨线程访问变量而不锁定时,您可以使用volatile/Thread.MemoryBarrier()。原子变量,例如int,总是一次性读取和写入整个变量。这意味着您永远不会在另一个线程更改它之前获得一半的值,而在它更改之后获得另一半。因此,您可以在不同线程中安全地读取和写入值,而无需同步。但是,编译器可能会优化一些读写操作,您可以使用volatile关键字来阻止这些操作。例如,如果您有这样的循环:sum=0;foreach

c# - 如何以线程安全的方式访问 C# WPF 控件?

为此,我尝试使用MSDN中的示例,但它们似乎只适用于Windows窗体。例如,使用.InvokeRequired的方法依赖于Windows窗体控件,但是此方法不适用于WPF控件。Backgoundworker方法也会抛出InvalidOperationException-Thecallingthreadcannotaccessthisobjectbecauseadifferentthreadownsit.那么如何在WPF上下文中完成呢? 最佳答案 您只想使用Dispatcher.Invoke方法(或异步等效Dispatcher.Be

c# - ADO.NET:为所有 VarChar 参数的 SqlParameter.Size 指定 -1 安全吗?

我们有一个现有的C#代码主体,可以在许多地方调用参数化的即席SQLServer查询。我们从不指定SqlParameter.Size,它记录了在这种情况下,SqlParameter类从参数值推断大小。我们最近才意识到由此产生的SQLServer计划缓存污染问题,其中为每个不同的参数大小组合缓存了一个单独的计划。幸运的是,每当我们创建一个SqlParameter时,我们都是通过一个实用方法来完成的,因此我们有机会向该方法添加几行代码并解决这个问题。我们正在考虑添加以下内容:if((sqlDbType==SqlDbType.VarChar)||(sqlDbType==SqlDbType.NV

c# - C# Web 服务中的加密

我正在寻找一种简单的方法来加密我的C#Web服务中的soap通信。我正在调查WSE3.0但微软似乎放弃了对它的支持,因此使用起来并不简单。WCF似乎是一个选项,但我不想从.NET2.0升级。任何简单、直接的加密方法? 最佳答案 我认为这会有所帮助;去年我们用它来压缩web服务,它表现非常好,我相信它可以通过加密类来增强;CreatingCustomSOAPExtensions-CompressionExtension 关于c#-C#Web服务中的加密,我们在StackOverflow上找

c# - 在 C# 中使用 Bouncy CaSTLe 加密/解密

我正在使用“BouncyCaSTLe.Crypto.dll”在我的应用程序中加密/解密字符串。我正在使用以下codefromthisblog:我有一个类BCEngine,与上面提到的链接中给出的完全相同。publicclassBCEngine{privatereadonlyEncoding_encoding;privatereadonlyIBlockCipher_blockCipher;privatePaddedBufferedBlockCipher_cipher;privateIBlockCipherPadding_padding;publicBCEngine(IBlockCiphe

c# - 内联创建和使用一次性对象是否安全?

我已经多次看到开发人员使用内联一次性对象,here例如。内联我的意思是:varresult=newDataTable().Compute("1+4*7",null);我知道Dispose方法不会被调用,但由于没有引用对象,垃圾收集器将如何处理它?使用这样的一次性元素安全吗?我在示例中使用了DataTable,因为它是我找到的唯一具体示例,但我的问题通常适用于一次性对象。我个人并没有那样使用它们,我只是想知道如果以这种方式使用它们,GC是否会对其进行不同的处理。 最佳答案 这里的关键问题是调用Dispose的时间,这在您的示例中是未知

c# - 是否可以在每个用户的基础上设置 ASP.NET Owin 安全 cookie 的 ExpireTimeSpan?

我们有一个使用Owincookie身份验证的ASP.NETMVC5应用程序。目前,我们设置cookie认证如下:publicpartialclassStartup{publicvoidConfigureAuth(IAppBuilderapp){vartimeoutInMinutes=int.Parse(ConfigurationManager.AppSettings["cookie.timeout-minutes"]);app.UseCookieAuthentication(newCookieAuthenticationOptions{AuthenticationType=Defaul

c# - 我如何在类型安全的枚举模式上使用 switch 语句

我以不同的方式找到了一个关于实现枚举的漂亮示例。我认为这就是所谓的类型安全枚举模式。我开始使用它,但我意识到我不能在switch语句中使用它。我的实现如下所示:publicsealedclassMyState{privatereadonlystringm_Name;privatereadonlyintm_Value;publicstaticreadonlyMyStatePASSED=newMyState(1,"OK");publicstaticreadonlyMyStateFAILED=newMyState(2,"ERROR");privateMyState(intvalue,stri