小编voj*_*jta的帖子

为什么在Nullable <T> shorthands上调用静态方法是不可能的?

我认为T?只是编译器的简写Nullable<T>.根据MSDN:

语法T?是简写Nullable<T>,其中T是值类型.这两种形式是可以互换的.

但是,有一点(微不足道)的差异:Visual Studio不允许我在shorthands上调用静态方法:

bool b1 = Nullable<int>.Equals(1, 2); //no error
bool b2 = int?.Equals(1, 2); //syntax error "Invalid expression term 'int'"
Run Code Online (Sandbox Code Playgroud)

为什么?这种限制有什么理由吗?

.net c# nullable syntax-error

24
推荐指数
1
解决办法
391
查看次数

Xamarin .jar绑定 - '无法找到位图'

我有一个.jar带有Java接口的文件MyService,它有一个方法:

boolean printBitmapObject(android.graphics.Bitmap bitmap, byte[] result);
Run Code Online (Sandbox Code Playgroud)

我想.jar在Visual Studio 2015中的Android Xamarin项目中使用C#中的这个文件.我做了以下步骤:

  1. 我创建了一个新的库绑定项目.
  2. 我将.jar文件放入属性设置为Jars的新项目的目录中.BuildActionInputJar
  3. 该项目成功建成.
  4. 我将库绑定项目的引用添加到我的主项目中.

不幸的是,我无法构建我的主项目,因为自动生成的C#代码中存在错误:

    public interface IMyService : global::Android.OS.IInterface
    {
       bool PrintBitmapObject (Bitmap bmp, byte[] result); //"Bitmap" is red underlined
    }
Run Code Online (Sandbox Code Playgroud)

与消息"The type or namespace name 'Bitmap' could not be found (are you missing a using directive or an assembly reference?)".

还有一个自动生成的抽象类IMyServiceStub,它也无法识别Bitmap.而且,它不知道一些自动生成BitmapStub:

public abstract class IMyServiceStub : global::Android.OS.Binder, global::Android.OS.IInterface, …
Run Code Online (Sandbox Code Playgroud)

c# java android visual-studio xamarin

12
推荐指数
1
解决办法
765
查看次数

将APDU命令发送到android中的USIM/SIM卡

我已经使用过智能卡,我熟悉APDU命令(在ISO/IEC 7816全球平台规范中定义).

现在我想知道是否有办法将APDU命令发送到插入手机的USIM/SIM卡?(安装了Android v4.4.4 kitkat的三星A3.)

我已经在谷歌搜索过,我发现了一些名为SIM Toolkit ApplicationSeek for Android的相关主题和工具.但我真的不明白这些是什么?这些项目是我必须在手机上安装的两个应用程序吗?或者这两个工具是否已经安装在USIM/SIM卡上并从手机接收命令?

主动命令,APDU命令AT命令有什么区别?

我应该学习android来开发SIM卡应用程序还是我只需要Java Card规范和ETSI标准?

提前致谢.

java android smartcard javacard sim-card

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

如何区分不同的ISO 14443-4卡?

有不同的智能卡支持ISO 14443-4.例如,Mifare Plus及其本机命令集.或其他具有不同命令集的卡(即7816-4 APDU).

我为读卡器开发了一些软件,我需要确定卡支持哪些命令(例如,它是否支持ISO 7816-4结构中的命令).

建议区分它们的方法是什么?我应该从Mifare Plus命令集中尝试一些命令并检查我是否得到正确的回复?或者有更聪明的方法吗?

apdu smartcard smartcard-reader contactless-smartcard

10
推荐指数
2
解决办法
3399
查看次数

Android Vision条形码API - 使用二进制数据读取自定义QR码

我用com.google.android.gms.vision.barcode.BarcodeDetector它来读取QR码.问题是这些代码携带原始二进制数据; 没有电话号码,没有URL,没有地理位置......我无法更改这些QR码,因为它们是在不同的应用程序中生成的.

当我使用Android Barcode API扫描这些QR码时,生成的Barcode对象不允许我访问原始数据,尽管它必须知道它!

我得到的只是"Unknown encoding"信息rawValuedisplayValue属性.

拥有byte[]属性而不是两个String属性会更有意义,因为QR码可以携带一般数据.

我没有看到隐藏开发人员的原始数据字节数组的意义.我可以以某种方式扩展BarcodeDetector课程或Barcode课程以获得我需要的东西吗?

编辑:

这是一个绝对有效的QR码,虽然它带有1024字节的数据,但Vision API无法读取它:

在此输入图像描述


QR码 - 原始二进制数据是相关的,但它不能解决我的问题.

java android qr-code barcode android-vision

9
推荐指数
1
解决办法
1836
查看次数

安装我的应用程序后,为什么Google Pay停止工作?

我开发了一款自两年前就已与Google Pay应用程序一起广泛使用的应用程序,其HCE NFC功能在Android 9发行之前就没有问题。

但是,最近我收到了许多来自Android 9用户的投诉。有人说我的应用与Google Pay有冲突。安装我的应用程序后,Google Pay不起作用(当他们尝试关闭或阻止NFC进行付款时,没有任何反应)。当他们卸载我的应用程序时,Google Pay将再次开始工作。

<?xml version="1.0" encoding="utf-8"?>
<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:description="@string/servicedesc"
    android:requireDeviceUnlock="false">
    <aid-group android:description="@string/aiddescription">
        <aid-filter android:name="F0707070707070617070"/>
    </aid-group>
</host-apdu-service>
Run Code Online (Sandbox Code Playgroud)

注意:在上面的示例中,我使用了一些虚假的AID,但是我确信真实的AID与Google Pay的AID不冲突。

HCE NFC在Android 9中引入了哪些重大变化?如何修复我的应用程序?

android nfc hce android-9.0-pie google-pay

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

JavaCard - 基于GF(2 ^ n)的ECC的纯软件实现

我有NXP的智能卡支持ECC over GF(p)并且不支持ECC over GF(2 ^ n).

在我的项目中,我需要使用这种特殊类型的智能卡(已经使用了数千个实例).但是,我需要在sect193r1上添加EC签名验证,这是GF(2 ^ n)上的曲线.

对我来说,性能不是问题.这可能需要一些时间.签名验证不涉及任何私钥,因此安全性和密钥管理也不是问题.不幸的是,我必须验证智能卡内的签名,而不是配备智能卡读卡器的设备.

有什么解决方案吗?是否存在基于GF(2 ^ n)的EC加密的纯软件JavaCard实现的任何现有源代码?

security cryptography smartcard javacard

7
推荐指数
1
解决办法
245
查看次数

字节数组的快速位移 - CMAC子键

我需要在JavaCard中尽可能快地实现16字节数组的左移位.

我试过这段代码:

private static final void rotateLeft(final byte[] output, final byte[] input) {
         short carry = 0;
         short i = (short) 16;
         do {
             --i;
             carry = (short)((input[i] << 1) | carry);
             output[i] = (byte)carry;
             carry = (short)((carry >> 8) & 1);
         } while (i > 0);
}
Run Code Online (Sandbox Code Playgroud)

任何想法如何提高性能?我正在考虑一些Util.getShort(...)Util.setShort(...)魔法,但我没有设法让它比上面的实现更快.

这是CMAC子项计算的一部分,不幸的是,它经常完成.如果你知道一些更快的计算CMAC子项的方法(一个循环中的子键或类似的东西),请告诉我.

performance cryptography bit-manipulation bit-shift javacard

7
推荐指数
1
解决办法
562
查看次数

Java Card小程序EEPROM与RAM测试

Java Card小程序中的一个典型错误是将持久性内存用于应该在RAM中的临时变量.

这些错误可能会减慢applet的速度并导致一些严重的问题(例如EEPROM损坏的症状).

单元测试很难揭示这些错误.单元测试将applet作为黑盒子访问,他们所能做的就是检查给定输入的输出.当然,它们可以测量时间并报告可疑的慢速命令,但是覆盖持久存储器中的单个字节几乎与覆盖RAM中的单个字节的时间相同.

有没有办法摆脱这些错误(编码时要小心)?我可以以某种方式检测EEPROM更改以及在处理特定APDU时完成了多少次更改?

当然,一个好的模拟器可以完成这项工作.但是,JCardSim(www.jcardsim.org)和恩智浦JCOP工具似乎都远远无法报告EEPROM使用情况统计数据.

你知道其他任何可以帮助我的工具或测试技术吗?

simulation debugging unit-testing smartcard javacard

7
推荐指数
1
解决办法
569
查看次数

C#等效的PHP http_build_query

我需要使用C#客户端将一些数据传递到服务器上的PHP页面HttpWebRequest.根据文档的预期数据是一个数组数组,如下所示:

$postData = array(
    'label1' => 'myLabel',
    'label2' => array(
        'label2_1' => 3
        'label2_2' => array(
            'label2_2_1' => 3
        )
    )
);
Run Code Online (Sandbox Code Playgroud)

上面的结构只是一个例子.它可能非常复杂,结构本身也不是一成不变的.

在PHP中有一个名为的函数http_build_query,它将这些PHP嵌套数组序列化为一个简单的字符串,该字符串可以作为HTTP POST请求的数据发送.问题是我需要从我的C#应用​​程序调用这个PHP页面.我想将这些嵌套数组表示为嵌套数据Dictionary<string, object>或匿名类型.

我怎样才能做到这一点?http_build_query生成输出字符串后会遵循什么规则?

有一个非常类似的问题将PHP数组转换为C#,遗憾的是这并没有解决我的问题.接受的答案建议采用固定结构的解决方案,第二种方法根本不起作用.

php c# arrays post http

7
推荐指数
1
解决办法
3274
查看次数