我正在开发一个需要捕获用户指纹的系统.我使用Java中的桌面应用程序完成了此任务.
我需要通过网页使用表单或对话框来完成,但我不知道该怎么做.我想避免applets.有没有办法在HTML中放置一个按钮并捕获指纹?
我正在使用verifinger sdk
更新 我给Verifinger团队发了一条消息,他们发给我了这个:
在开始实施这些问题之前,应该提出并回答:
如果您希望您的浏览器应用程序使用客户端指纹扫描仪,并且您希望使用Neurotechnology组件 - 您应该编写一个applet(Java)或ActiveX组件,然后将其嵌入到C#asp.net应用程序中(抱歉,我们没有样本)为了那个原因).还有其他实现方法,但applet是一种通用方法.
如果您希望您的应用程序在客户端PC上提取和/或进行匹配 - 您将不得不使用applet或ActiveX(为了运行在客户端pc上引用我们的库的代码).如果您不想这样做 - 您可以捕获图像(使用我们的组件,或者只是允许客户端选择文件),将其上传到后端(运行C#ASP.NET,Java EE甚至PHP) ),在那里处理,返回结果.
通常,Java Applet示例是一个很好的起点:您可以将它用于图像捕获和/或模板提取,并在服务器(即Web服务)上编写您自己的中间件(如注册到数据库或匹配),并从中引用它客户端浏览器应用
SDK确实包含Abis示例java applet.它可以使用Maven从命令提示符运行这个命令构建:"mvn clean install -Papplet"
从SDK\samples\biometrics\java目录(如果使用SDK 5.0)
来自SDK\samples \(如果使用SDK 4.5)
建议使用Maven 3.1.1版.
我希望它有用.
更新2
我做了一个applet捕获指纹并将它们传递给javascript函数.
如果我想在Slick 3.x中使用编译时间查询,我需要使用tsql在每个类中声明一个StaticDatabaseConfig注释.
有没有办法避免这种情况并设置全局配置?
@StaticDatabaseConfig("file:src/main/resources/application.conf#tsql")
object PersistenceService {
val database = Database.forConfig("database")
database.run( tsql"SELECT NOW()" )
}
Run Code Online (Sandbox Code Playgroud) 我参与了使用Spring Security 4.x和使用Facelets的JSF 2.2的项目.我只是注意到这个版本中的spring安全性默认情况下启用了使用请求令牌来防止跨站点请求伪造,情况是你必须将标记<sec:csrfMetaTags>
放在许多页面中(如果没有,春天拒绝请求),lib spring-faces
是在2.4.1中没有Facelets(XHTML)的这些标签.
我试图找到一个实现,以便使用这些框架来工作我的项目,但我找不到任何,你知道任何改编吗?
在我的情况下,我只调整了我需要的部分(此时),如果没有公共改编,我很乐意将它放入一个开源项目并尝试调整所有库.
谢谢.
UPDATE
我创建了一篇博客文章解释我的解决方案:http: //halexv.blogspot.mx/2015/07/spring-security-4x-csrf-protection-for.html
我有消息(m),我想通过不安全的方式发送数据后存储一些数据以验证其完整性。
我可以创建一个数字签名(DSA / RSA)。
或者,我可以计算摘要(哈希)并将其加密。
无论如何,当接收方收到消息时,应验证其完整性。
哪种方法更安全S(m)或C(H(m))?
更新
假设爱丽丝想向鲍勃发送一条消息
使用数字签名:
爱丽丝的部分:
鲍勃的部分:
使用摘要:
爱丽丝的部分:
鲍勃的部分:
我看到了使用发布的第二种方法的软件,但是我认为第一种更安全,对吗?
更新2
总之,最好的方法是使用第一种方法通过安全方式与Bob共享Alice的公钥。
第二种方法根本不提供安全性。
感谢@Perseids
我有以下代码:
SSLContext sslContext = SSLContext.getInstance("TLS", BouncyCastleProvider.PROVIDER_NAME);
sslContext.init(keyManagerFactory.getKeyManagers(), null, null);
SSLEngine sslEngine = sslContext.createSSLEngine();
String[] suites = { "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8" };
sslEngine.setEnabledCipherSuites(suites);
Run Code Online (Sandbox Code Playgroud)
谢谢。
编辑:我发现我应该使用BouncyCastleJsseProvider
which 需要一个SecureRandom
对象,如下所示:
sslContext.init(keyManagerFactory.getKeyManagers(), null, new SecureRandom());
Run Code Online (Sandbox Code Playgroud)
使用新的提供程序后,我在我的代码库中得到以下堆栈跟踪,据我所知,它应该像以前一样工作:
Aug 17, 2017 8:47:32 PM org.bouncycastle.jsse.provider.ProvTlsServer notifyAlertRaised
INFO: Server raised fatal(2) handshake_failure(40) alert: Failed to read record
org.bouncycastle.tls.TlsFatalAlert: handshake_failure(40)
at org.bouncycastle.tls.AbstractTlsServer.getSelectedCipherSuite(Unknown Source)
at org.bouncycastle.jsse.provider.ProvTlsServer.getSelectedCipherSuite(Unknown Source)
at org.bouncycastle.tls.TlsServerProtocol.sendServerHelloMessage(Unknown Source)
at org.bouncycastle.tls.TlsServerProtocol.handleHandshakeMessage(Unknown Source)
at org.bouncycastle.tls.TlsProtocol.processHandshakeQueue(Unknown Source)
at org.bouncycastle.tls.TlsProtocol.processRecord(Unknown Source)
at org.bouncycastle.tls.RecordStream.readRecord(Unknown Source)
at org.bouncycastle.tls.TlsProtocol.safeReadRecord(Unknown Source)
at org.bouncycastle.tls.TlsProtocol.offerInput(Unknown Source)
at …
Run Code Online (Sandbox Code Playgroud) java ×2
bouncycastle ×1
cryptography ×1
digest ×1
facelets ×1
fingerprint ×1
hash ×1
html ×1
scala ×1
security ×1
slick-3.0 ×1
spring ×1
sslengine ×1
t-sql ×1