小编Sim*_*off的帖子

使用RSA C#签名和验证签名

我最近发布了有关使用RSA加密大数据的问题,我最终完成了这一点,现在我继续使用用户的私钥实现签名并使用相应的公钥进行验证.但是,每当我比较签名数据和原始消息时,我基本上只会返回false.我希望你的一些人能看出我做错了什么.

这是代码:

public static string SignData(string message, RSAParameters privateKey)
    {
        //// The array to store the signed message in bytes
        byte[] signedBytes;
        using (var rsa = new RSACryptoServiceProvider())
        {
            //// Write the message to a byte array using UTF8 as the encoding.
            var encoder = new UTF8Encoding();
            byte[] originalData = encoder.GetBytes(message);

            try
            {
                //// Import the private key used for signing the message
                rsa.ImportParameters(privateKey);

                //// Sign the data, using SHA512 as the hashing algorithm 
                signedBytes = rsa.SignData(originalData, CryptoConfig.MapNameToOID("SHA512"));
            }
            catch …
Run Code Online (Sandbox Code Playgroud)

c# encoding signing rsa

49
推荐指数
1
解决办法
5万
查看次数

C#中的大数据RSA加密

这是我的第一篇文章,所以希望我没有错过任何重要的内容.我在C#中做一个项目,我需要使用公钥/私钥加密来加密消息,然后通过SSL连接发送它.

我选择使用RSACryptoService,根据文档,这是唯一用于加密数据的非对称加密方案.问题是我遇到了很多问题.(我想做对称加密,但这不是我老师要我做的事情,根据他的说法,确定块大小应该很容易,然后它应该为你完成所有的工作.)好吧,到目前为止没有运气,我尝试了一些不同的方法,但现在我又回到了基础并再次尝试,这是我目前的代码:

    public string[] GenerateKeysToStrings(string uniqueIdentifier)
    {
        string[] keys;
        using (var rsa = new RSACryptoServiceProvider(4096))
        {
            try
            {
                string privateKey = rsa.ToXmlString(true);
                string publicKey = rsa.ToXmlString(false);

                this.pki.StoreKey(publicKey, uniqueIdentifier);

                keys = new string[2];
                keys[0] = privateKey;
                keys[1] = publicKey;
            }
            finally
            {
                //// Clear the RSA key container, deleting generated keys.
                rsa.PersistKeyInCsp = false;
            }
        }
        return keys;
    }
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我生成密钥并通过将公钥发送到存储它的简单类来模仿PKI,然后将私钥写入文件(请注意,我还有另一种方法可以执行相同操作但是IT卖场,而不是,只是因为我想测试和简化的东西,因为我得到一个数组No such key exceptions,有时加密例外,当我做到这一点的例子所示的方式,所以我想通过简单的存储简化它rsa.ToXmlString的字符串,如在弦一个数组,但没有运气.)

现在我有一个加密和解密方法如下:

    public string Encrypt(string keyString, string message)
    {
        string encryptedMessage;
        using (var …
Run Code Online (Sandbox Code Playgroud)

c# encryption rsa encryption-asymmetric

8
推荐指数
1
解决办法
2万
查看次数

Affine Transform如何在Java中发挥作用?

我一直在使用Affine Transform在我的java项目中旋转一个String,而我还不是一个经验丰富的程序员,所以我花了很长时间做一个看似很小的任务.旋转一个字符串.

现在我终于得到了或多或少的工作,正如我所希望的那样,除非它没有像我想要的那样精确地完成......

由于经过了大量的反复试验并阅读了仿射变换的描述,我仍然不太清楚它到底是做什么的.我想我现在所知道的是,我取一个字符串,并定义字符串的中心(或我想要旋转的点),但是矩阵在哪里?(显然我不知道嘿嘿)

任何人都可以试着向我解释仿射变换是如何工作的,换句话说就是java doc?也许它可以帮助我调整我的实现,而且,我真的很想知道:)

提前致谢.

java drawstring rotation matrix affinetransform

5
推荐指数
1
解决办法
1万
查看次数

写入/读取数据包产生垃圾

我在 Android 上有一个客户端,它使用 Android VPNService 公开的 TUN 接口来拦截包。在这方面,我读取所有传入的数据包并将它们写入 TUN 接口。这基本上意味着我对收到的每个数据包进行写入。这样做的问题是,Android 似乎为每个写入和读取调用分别分配了int[67] 和 int[80],这是大量垃圾,导致大量重复垃圾收集。

这是读取操作的代码,它从我的服务器读取所有传入的数据包。正如评论中提到的,我从一个简单的数据报频道中读到:

public void run() {
    ByteBuffer buffer = ByteBuffer.allocate(32767);

    while (!Thread.currentThread().isInterrupted()) {
        try {
            buffer.clear();
            // getVpnTunnel is a simple getter for the underlying datagram channel.
            int packetSize = conn.getVpnTunnel().read(buffer); // int[80] garbage allocated  here
            buffer.flip();

            if (packetSize < 1) {
                // No data, wait then read.
                try {
                    Thread.sleep(5);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    break;
                }
                continue;
            }

            switch (...) { …
Run Code Online (Sandbox Code Playgroud)

java android datagram garbage thread-sleep

5
推荐指数
0
解决办法
207
查看次数

Webview仅显示某些页面上的原始HTML文本

我正在开发一个项目,我们有兴趣拦截来自WebView的一些HTTP流量,然后将一些额外的标头附加到请求,然后返回并在WebView中显示它.

为此,我们使用shouldInterceptRequest(WebView视图,String URL)方法,该方法返回webview应显示的WebResourceResponse.

这是我做的:

private WebResourceResponse handleRequest(String url){
    Log.d(TAG, "Intercepting request at : " + url);
    HttpURLConnection connection = null;        
    URL serverAddress = null;           
    WebResourceResponse response = null;
    InputStream is = null;
    String type = null;
    String encoding = null;
    int statusCode;
    int length;

    try
    {
        //Set up the initial connection
        serverAddress = new URL(url);
        connection = (HttpURLConnection)serverAddress.openConnection();

        // Initiate a HEAD request to get meta data
        connection.setRequestMethod("HEAD");

        // Let the WebView handle requests with no headers in them.
        Map<String, …
Run Code Online (Sandbox Code Playgroud)

android webresponse httprequest android-webview

4
推荐指数
1
解决办法
2691
查看次数