我开始尝试使用通用应用程序的新解决方案.为了测试我的代码,我想添加一个单元测试项目(Windows Phone 8.1),但如果我这样做,我在开始单元测试时收到此错误消息:
错误:DEP0700:应用程序注册失败.Windows无法安装包808f4bed-6f93-48b9-9b63-071d68456607,因为此程序包需要更高的Windows版本.该软件包请求Windows版本6.3与AppModel版本1,而当前Windows版本为6.3与AppModel版本0.(0x80073cfd)

这个AppModel版本1和AppModel版本0是什么意思,我该如何解决这个问题?
或者是否存在另一种在Microsoft Universal Apps环境中进行单元测试的方法?
这就是我的项目结构

Windows Phone 8.1项目+ Windows Phone 8.1单元测试=不工作Windows Phone 8项目+ Windows Phone 8单元测试=工作
但我仍然不知道如何让Windows Phone 8.1工作.
顺便说一句我的Windows版本(Windows 8.1更新)
PS C:\Windows\system32> [System.Environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
6 3 9600 0
Run Code Online (Sandbox Code Playgroud) 我无法使用System.Net.WebRequestTLS 1.2的请求.如果我这样做,我会收到异常The request was aborted: Could not create SSL/TLS secure channel.和协议错误Handshake Failure.
通过TLS 1.2连接和身份验证可与Internet Explorer和Chrome配合使用.OpenSSL可以通过TLS 1.2连接到这个端点.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var req = WebRequest.Create($"https://{host}:{port}");
((HttpWebRequest)req).ClientCertificates = new X509Certificate2Collection(GetCertificate());
var requestStream = req.GetRequestStream();
Run Code Online (Sandbox Code Playgroud)
该方法GetCertificate()返回带有私钥的证书,该私钥嵌入在该软件中.
wirehark的文本输出按发生顺序排列.
客户你好
Secure Sockets Layer
TLSv1.2 Record Layer: Handshake Protocol: Client Hello
Content Type: Handshake (22)
Version: TLS 1.2 (0x0303)
Length: 207
Handshake Protocol: Client Hello
Handshake Type: Client Hello …Run Code Online (Sandbox Code Playgroud) 我买了一个 NitroKey HSM,想用 EC 推导出一个秘密。 以前的问题
为此,我想使用这些CKM_ECDH1_DERIVE机制。此 HSM 支持哪个,请参阅:

参考PKCS#11 规范,必须考虑:
CKM_ECDH1_DERIVE必须与功能一起使用Derive(页 188)CKM_ECDH1_DERIVE需要CK_ECDH1_DERIVE_PARAMS带有以下参数的参数(页 222):
DeriveKey需要以下参数:
因此,根据这些信息,我尝试实现一种方法。
但我收到此错误:
Net.Pkcs11Interop.Common.Pkcs11Exception:方法 C_DeriveKey 返回 CKR_TEMPLATE_INCOMPLETE
在Session.DeriveKey。
说明CKR_TEMPLATE_INCOMPLETE(第 64 页):
如果提供的模板中的属性值,连同任何默认属性值和对象创建函数本身贡献给对象的任何属性值,都不足以完全指定要创建的对象,则尝试应该失败并显示错误代码CKR_TEMPLATE_INCOMPLETE。
和这里(第 98 页)
CKR_TEMPLATE_INCOMPLETE:为创建对象指定的模板不完整,缺少一些必要的属性。有关更多信息,请参阅第 10.1 节。
但我使用了必要的属性:
如何在.net core 2.1中获取usb存储设备的序列号?
我找到了不同的解决方案,但遗憾的是,由于缺乏Windows注册表和.net核心中的wmi,它们无法正常工作.
在Powershell中它非常简单,但我无法在Powershell Core中找到实现.
PS C:\> Get-Disk | Select-Object SerialNumber
SerialNumber
------------
0008_0D02_0021_9852.
Run Code Online (Sandbox Code Playgroud)
我更喜欢在客户端上没有额外安装的解决方案(Win,Linux,Mac).
我的盒子上安装了Powershell 3.
我需要使用Powershell 4测试一些脚本,但我想继续运行一些在Powershell 3下测试的脚本,我不想通过安装Powershell 4来破坏某些东西.
问题:尽管我已安装Powershell 4,是否可以在Powershell版本3下打开Powershell会话(如果需要,甚至可以打开2个)?
在powershell中,某些参数具有动态自动完成行为.例如,Get-Process参数Name.我可以使用TAB迭代我的所有进程.

我想在我的PSCmdlet中使用此行为.
但问题是,我只知道如何使用静态自动完成值来做到这一点.看例子:
public class TableDynamicParameters
{
[Parameter]
[ValidateSet("Table1", "Table2")]
public string[] Tables { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是一个如何使用原生powershell http://blogs.technet.com/b/heyscriptingguy/archive/2014/03/21/use-dynamic-parameters-to-populate-list-of-printer-names完成此操作的示例. ASPX
它适用 于@bouvierr
public string[] Tables { get; set; }
public object GetDynamicParameters()
{
if (!File.Exists(Path)) return null;
var tableNames = new List<string>();
if (TablesCache.ContainsKey(Path))
{
tableNames = TablesCache[Path];
}
else
{
try
{
tableNames = DbContext.GetTableNamesContent(Path);
tableNames.Add("All");
TablesCache.Add(Path, tableNames);
}
catch (Exception e){}
}
var runtimeDefinedParameterDictionary = new RuntimeDefinedParameterDictionary();
runtimeDefinedParameterDictionary.Add("Tables", new RuntimeDefinedParameter("Tables", typeof(String), new Collection<Attribute>() { new …Run Code Online (Sandbox Code Playgroud) 我想将Azure Files Storage挂载到我的本地Workstation.此时的文档似乎并不清楚.
文件说明
某些Internet服务提供商可能会阻止端口445
似乎证明了这个szenario,但是net usedons不工作localy(Azure VM工作正常).
我收到此错误:
"无法找到网络名称"
文档:https://github.com/Azure/azure-content/blob/master/articles/storage/storage-dotnet-how-to-use-files.md#mount-the-file-share-from-an-本地客户端运行的窗口
编辑:
net use <drive-letter>: \\<storage-account-name>.file.core.windows.net\<share-name> /u:<storage-account-name> <storage-account-key>它适用于同一区域和订阅中的Azure实例.编辑2:
它有效,但只有一次!重启后我遇到了同样的问题.针对SMB端口的TCP Ping仅获得了azure vm.
本地工作站
Test-NetConnection -ComputerName SHARENAME.file.core.windows.net -Port 445
TcpTestSucceeded : False
Run Code Online (Sandbox Code Playgroud)
Azure VM
Test-NetConnection -ComputerName SHARENAME.file.core.windows.net -Port 445
TcpTestSucceeded : True
Run Code Online (Sandbox Code Playgroud)
看来,我的ISP阻止了端口445.
azure azure-storage azure-storage-blobs azure-table-storage azure-files
我想在 .NET 中以最有效的方式加密一个大文件(比如 64 GB)。
我将如何实现这一点:
AesManaged来加密文件流(读取 64 GB)HMACSHA512来计算保存文件的哈希值(读取 64 GB)简化的 C# 代码:
using (var aesManaged = new AesManaged())
{
using (var msEncrypt = File.OpenWrite(@"C:\Temp\bigfile.bin.tmp"))
{
using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
File.OpenRead(@"C:\Temp\bigfile.bin").CopyTo(csEncrypt);
new MemoryStream(iv).CopyTo(csEncrypt);
}
}
}
using (var hmac = new HMACSHA512(hmacKey))
{
hmacHash = hmac.ComputeHash(File.OpenRead(@"C:\Temp\bigfile.bin.tmp"));
}
byte[] headerBytes;
using (var memoryStream = new MemoryStream())
{
var header = new Header …Run Code Online (Sandbox Code Playgroud) 我需要将客户端证书(例如,不是来自Windows证书存储区)设置到我的wcf通道,但是我总是会收到异常:
System.InvalidOperationException:“对象是只读的。”
这很奇怪,因为这些属性都有一个setter,但是如果我分配了X509Certificate2,则会崩溃。
System.InvalidOperationException
HResult=0x80131509
Nachricht = Object is read-only.
Quelle = System.Private.ServiceModel
Stapelüberwachung:
at System.ServiceModel.Security.X509CertificateRecipientClientCredential.ThrowIfImmutable()
at System.ServiceModel.Security.X509CertificateRecipientClientCredential.set_DefaultCertificate(X509Certificate2 value)
Run Code Online (Sandbox Code Playgroud)
var binding = new BasicHttpsBinding();
var endpoint = new EndpointAddress(new Uri("https://myservice.com"));
var channelFactory = new ChannelFactory<MyService>(binding, endpoint);
var serviceClient = channelFactory.CreateChannel();
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
var token = GetToken(); // Just an method that reads a pfx from disk
channelFactory.Credentials.
ServiceCertificate.DefaultCertificate = token.Certificate; // throws exception
channelFactory.Credentials.
ClientCertificate.Certificate = token.Certificate; // throws exception too
Run Code Online (Sandbox Code Playgroud)
该方法SetCertificate引发相同的System.InvalidOperationException: "Object …
来自java.util.Randomfor的种子可以java.security.SecureRandom削弱加密强随机数生成器吗?
我看到了这段代码,想知道为什么要以这种特定方式完成。
randomGenerator = new SecureRandom();
final Random rnd = new Random();
randomGenerator.setSeed(rnd.nextLong());
Run Code Online (Sandbox Code Playgroud)
从文档来看,调用setSeed永远不会减少随机性。那么为什么要setSeed调用呢?
public void setSeed(long seed)
使用给定长种子中包含的 8 个字节为该随机对象重新设定种子。给定的种子补充而不是替换现有的种子。因此,保证重复调用永远不会减少随机性。
docs.oracle.com
我尝试使用加密和解密数据System.Security.Cryptography.Pkcs,但是它仅适用于RSA证书,如果我使用ECC(曲线ECDH_brainpoolP512r1)证书,则构造函数会X509Certificate2崩溃,并带有Access DeniedException。
New-SelfSignedCertificate `
-Subject "CN=Test Code Signing RSA" `
-Type DocumentEncryptionCert `
-KeyUsage "DigitalSignature" `
-FriendlyName "Test Code Signing" `
-NotAfter (get-date).AddYears(5) `
-KeyExportPolicy Exportable `
-SmimeCapabilities `
-KeyAlgorithm ECDH_brainpoolP512r1
Run Code Online (Sandbox Code Playgroud)
var base64cert = "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";
new System.Security.Cryptography.X509Certificates.X509Certificate2(Convert.FromBase64String(base64cert), "qwert");
Run Code Online (Sandbox Code Playgroud)
Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Access Denied
at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(Byte[] rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags)
at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, …Run Code Online (Sandbox Code Playgroud) c# elliptic-curve x509certificate2 public-key-encryption pkcs#7
我在 nitro key hsm 上创建了一个 Brainpool EC,并希望将其用于 .NET Framework 的加密操作,例如System.Security.Cryptography.ECDiffieHellman.
我用pkcs11-tool --list-objects公钥提取但只得到一个值,即 EC_POINT。
那么,如何得到这个点的坐标呢?
Public Key Object; EC EC_POINT 320 bits
EC_POINT: 0451040defed7988b095679e5aca422382d949c2e7fd937646def25cf7eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
EC_PARAMS: 06092b2403030208010109
label: Brainpool #1
ID: 10
Usage: verify
Run Code Online (Sandbox Code Playgroud)
这个 EC_POINT 是 DER 编码的,我用它来提取EC_POINT的真实值。
040defed7988b095679e5aca422382d949c2e7fd937646def25cf7
eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215
d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
Run Code Online (Sandbox Code Playgroud)
c# ×6
nitrokey ×2
pkcs#11 ×2
powershell ×2
.net ×1
.net-core ×1
aes ×1
asp.net-core ×1
azure ×1
azure-files ×1
c#-4.0 ×1
cryptography ×1
der ×1
encryption ×1
haproxy ×1
hmac ×1
java ×1
opensc ×1
pkcs#15 ×1
pkcs#7 ×1
pscmdlet ×1
random ×1
tls1.2 ×1
unit-testing ×1
usb-drive ×1
wcf ×1
windows-8.1 ×1