首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的.Net SecureString

Java中的.Net SecureString
EN

Stack Overflow用户
提问于 2014-03-25 20:18:05
回答 3查看 3.1K关注 0票数 5

我试图在客户网站上使用第三方认证web服务。web服务是用.Net编写的,并接受SecureString作为密码类型。

代码语言:javascript
复制
AuthResult Login(string username, SecureString passkey)

我的应用程序是用Java编写的,Java中没有兼容的SecureString类型,我可以使用:(当我生成一个轴代理时,它会生成一个存根,没有SecureString的成员,因此我无法对服务进行身份验证调用。

代码语言:javascript
复制
public class SecureString  implements java.io.Serializable {
    public SecureString() {
        ...
    }
}

我正在尝试http://sanguinecomputing.com/a-secure-string-implementation-for-long-term-storage-of-sensitive-data-in-java/,但我不是很有希望

有人能帮我克服这个互操作性问题吗?我正在寻找一种将secureString类型的参数从Java代码发送到.Net服务的方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-08 21:23:49

经过更多的研究,可以说.Net类型的SecureString是不可互操作的.我已经将请求发送给Service,以便编写一个以char[]为参数的服务。

票数 0
EN

Stack Overflow用户

发布于 2017-10-03 03:00:50

一点儿没错。SecureString不是可序列化的类型。因为SecureString依赖于DPAPI,而DPAPI本身依赖于本地机器属性来构造它的加密密钥/向量。

发布带有SecureString -type参数的API这一事实表明了其设计中的一个重要缺陷。任何远程客户端都不可能提交该参数。

票数 3
EN

Stack Overflow用户

发布于 2014-03-25 23:29:13

..。我的应用程序是用Java编写的,在Java中没有兼容的SecureString类型 ..。有人能帮我克服这个互操作性问题吗?

如您所知,Java中没有SecureString

在Java中,您应该使用char[]并在完成该材料时覆盖它。来自Java密码扩展参考指南中的使用密码加密

将密码收集并存储在java.lang.String类型的对象中似乎是合乎逻辑的。但是,这里有一个警告:类型为ObjectsString是不可变的,也就是说,没有定义的方法允许您在使用后更改(覆盖)或清除字符串的内容。此特性使String对象不适合存储用户密码等安全敏感信息。您应该始终将安全敏感信息收集并存储在char数组中。

因此,您的SecureString将有一个私有的char[],并且在销毁时将数组归零。我相信.NET的SecureString在不使用时掩盖了字符串(我不相信它是真正的加密,但我可能错了)。因此,您也需要提供一个掩码功能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22645382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档