我需要在我正在开发的项目中使用一些加密机制.我正在探索RSA加密并编写了一些示例程序来学习.
据我所知,RSA加密的块大小为16字节.所以我给字符串"12345678"作为下面函数的输入:
public static string Encrypt (string input) {
var byteConverter = new UnicodeEncoding ();
RSACryptoServiceProvider cruptoEngine = new RSACryptoServiceProvider();
byte[] output = cruptoEngine.Encrypt (byteConverter.GetBytes (input), false);
return BytesToString (output); //BytesToString () converts the bytes to hex string
}
现在我得到的加密字符串是128个字节(256个十六进制字符).这个字符串对我来说太大了.如果我提供16字节的普通数据,我有点希望得到16字节的加密数据.难道我做错了什么?这是应该发生的吗?我可以以某种方式缩短加密数据吗?
我打算在我的一个项目中使用TripleDES.我正在做一些实验来适应它.我理解三重DES的块大小是8字节所以我假设如果给出8字节的数据,我应该得到8字节的加密数据.但我得到的是:
Input Size | Encrypted Size . | . . | . 6 bytes | 8 bytes 7 bytes | 8 bytes 8 bytes | 16 bytes 9 bytes | 16 bytes . | . . | .
这是正常的吗?这是它应该工作的方式.以下是我尝试使用三重DES的方法:
class TripleDESEncryption
{
private readonly TripleDESCryptoServiceProvider engine;
public TripleDESEncryption () : this (256) { }
public TripleDESEncryption (int keySizeInBits) {
engine = new TripleDESCryptoServiceProvider { KeySize = keySizeInBits };
engine.GenerateKey ();
}
public byte[] Encrypt (byte[] plain) {
return engine.CreateEncryptor ().TransformFinalBlock …Run Code Online (Sandbox Code Playgroud) 我有一个"门票"表,有一些跟随结构(删除不必要的列)
int | string | int | ID | Window | Count | ------------------------ 0 | Internet | 10 | 1 | Phone | 20 | 2 | Fax | 15 | 3 | Fax | 10 | 4 | Internet | 5 | . | . | . | . | . | . |
我已将此表映射到"Ticket"类.所以我可以得到这样的所有记录:
var tickets = from t in db.Tickets
select t;
现在我需要获取表中唯一窗口名称的列表.对于上表,列表看起来像:
无论如何创建这个列表而不获取所有记录并迭代它们?
我正在使用SQL Server 2008快速版.
编辑:谢谢你的答案,它解决了上述问题.只要被贪婪,但有什么办法也得到了总数的每个窗口.例如:
我有JavaScript方法,当提交表单的特定类(mcb)时,它会起作用:
function BindCloseMessage() {
$(".mcb").submit(function(event) {
alert("closing..."); //Here I want to get the id of form
event.preventDefault();
});
}
Run Code Online (Sandbox Code Playgroud)
代替警报调用,我需要访问其提交被调用的表单的id.我该怎么做?更好的是访问任何属性的提示......
谢谢
[问题似乎有点长,但请耐心等待.它有样本来源来解释这个问题.]
请考虑以下基本上是WCF主机的代码:
[ServiceContract (Namespace = "http://www.mightycalc.com")]
interface ICalculator
{
[OperationContract]
int Add (int aNum1, int aNum2);
}
[ServiceBehavior (InstanceContextMode = InstanceContextMode.PerCall)]
class Calculator: ICalculator
{
public int Add (int aNum1, int aNum2) {
Thread.Sleep (2000); //Simulate a lengthy operation
return aNum1 + aNum2;
}
}
class Program
{
static void Main (string[] args) {
try {
using (var serviceHost = new ServiceHost (typeof (Calculator))) {
var httpBinding = new BasicHttpBinding (BasicHttpSecurityMode.None);
serviceHost.AddServiceEndpoint (typeof (ICalculator), httpBinding, "http://172.16.9.191:2221/calc");
serviceHost.Open ();
Console.WriteLine ("Service …Run Code Online (Sandbox Code Playgroud) 我有一系列具有不同参数签名的函数:
public void function1 (string s1, string s1, string s3, string s4) {...}
public void function2 (int i1, int i2, string s3, string s4) {...}
public void function3 (int i1, string s2, int i3, string s4) {...}
.
.
etc //some 30 odd functions
Run Code Online (Sandbox Code Playgroud)
调用每个函数可能会抛出一组异常,如TimeoutException,CommunicationException等(是的,这些是WCF代理函数)
现在我必须将这些调用包装在try catch块中,但DRY原则说我写错了很多相同的try catch块:
public void Interfacefunction1 (...) {
try {
function1 (...);
}
catch (TimeoutException) {
taskResult.Success = false;
taskResult.Message = Resources.ServerConnectionBroke;
}
catch (CommunicationException) {
taskResult.Success = false;
taskResult.Message = Resources.CommunicationFailed;
}
}
//and... …Run Code Online (Sandbox Code Playgroud) 我有一个最初用Delphi编写的win32库(DLL)项目.它被用于各种应用,并且工作正常.
现在我需要在Win CE应用程序中使用相同的功能.据我所知,不能直接使用相同的DLL.将代码移植到Win CE有什么选择?
据我所知,当TCP客户端连接到服务器时,它会自动使用未使用的本地端口,除非明确指定.在服务器端,我们有一个侦听套接字,只要接受新连接,就会创建一个新套接字.
但是所有服务器套接字都使用相同的本地端口(我用netstat检查过).我的问题是当所有服务器端套接字通过相同的IP地址和本地端口进行通信时,从客户端发送的数据包如何到达服务器上的特定套接字?
下面是一个telnet快照,显示我的tcp/ip echo服务器使用相同的地址和端口进行2个不同的连接.
我们一直在使用Pro Essentials图形(gigasoft.com),但它与delphi不能很好地兼容,所以它一直在引发问题.
我们需要显示波形和条形图(不是同时显示).波形可能有数千个点.我们需要一些功能齐全的东西,这是一种"活的"产品.
我们的应用程序是本机win32 delphi 2009应用程序.
谢谢你的建议!
NSData *myRequest = [NSString stringWithFormat:(@"&site=%@&key=%@",tmpSite,tmpKey)];
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?
谢谢
如果我有一个异步方法:
async Task Process()
{
while (condition)
{
await ...;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要安排执行此方法.所以我使用:
Task.Run(Process);
Run Code Online (Sandbox Code Playgroud)
我是否需要保留方法Task返回的对象的引用,Task.Run以确保Process执行完成?
这里有更多的上下文:我需要在我的应用程序中创建大量(大约50K)任务队列.所以我想创建一个无线程队列处理设计,当队列为空时(因为大多数队列都是这样),它没有成本(除了内存).
样本类的要点:https://gist.github.com/hemant-jangid/e990b27507596c086e5651f504d0521f
c# ×5
.net ×4
cryptography ×2
delphi ×2
encryption ×2
tcp ×2
3des ×1
async-await ×1
charts ×1
delphi-2009 ×1
exception ×1
graphing ×1
http ×1
iphone ×1
javascript ×1
jquery ×1
linq ×1
nsdata ×1
objective-c ×1
rsa ×1
sql-server ×1
wcf ×1
windows ×1
winsock ×1