我正在编写一个使用 NFC 标签来传输一些信息的 Android 应用程序。目前我有从 NFC 标签读取内容的读取功能:
protected NdefMessage[] getNdefMessages(Intent intent) {
// Parse the intent
NdefMessage[] msgs = null;
String action = intent.getAction();
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
Parcelable[] rawMsgs =
intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (rawMsgs != null) {
msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
}
} else {
// Unknown tag type
byte[] empty = new byte[] {};
NdefRecord record = new NdefRecord(NdefRecord.TNF_UNKNOWN, empty, empty, empty);
NdefMessage msg = new NdefMessage(new NdefRecord[] {
record
});
msgs = new NdefMessage[] {
msg
};
}
} else {
finish();
}
return msgs;
}
现在,我想为通信添加安全性,即 SSL。但是,我真的不知道我必须采取哪些步骤才能实现此功能。 是否有一些 NFCSecurity 类或类似的东西可以为您完成所有工作?
有什么想法吗?
最佳答案
Android NFC API 让您可以访问标签上的(低级)标签通信和(高级)NDEF 消息存储(或通过 Android Beam 传输)。
增加安全性,同时仍然保留自动 NDEF 消息读写的好处,可以通过例如加密您使用的 NdefRecord
的有效负载来完成。
SSL/TLS 在连接级别上工作。据我所知,没有标签支持这样的事情。您可以考虑将 SSL/TLS 添加到 NFC 点对点通信中,但目前还不存在。这将涉及修改 Android NFC 堆栈和构建自定义 Android 系统镜像(如果可能的话)。它不是可以通过应用程序添加到 Android Beam 之上的东西。
关于android - 将 SSL 添加到 NFC 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16035158/