Tag: 安全

这是一种安全的加密方法吗?

我正在编写一个Android应用程序,它使用对称密钥加密来保护敏感数据。 据我所知,Android只支持“PBEWithMD5AndDES”。 这个算法有多安全? 另外,我在下面包含了我的代码(非andriod)。 我的代码是否正确加密数据? import java.io.UnsupportedEncodingException; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.spec.InvalidKeySpecException; import java.security.spec.InvalidParameterSpecException; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; public class CipherTest { private static class EncryptInfo { private final byte[] encryptedData; private final byte[] initVector; private […]

将Google AppEngine与胖客户端集成

我想制作一个多用户客户端 – 服务器解决方案,其中Java Swing胖客户端作为前端,Google AppEngine(Java one)作为后端。 问题是GAE只提供基于Web的登录和注销表单,因此在胖客户端中使用Google帐户function并不是一件容易的事。 您能否就如何允许胖客户端登录和从GAE webapp注销提出一些建议/提示/想法?

如何使用Netbeans 7.1配置glassfish 3.1安全文件领域?

我试图在本教程后面的glassfish 3.1中配置一个简单的文件域: 我做了一切,因为它说但不起作用,当我前往管理页面时,我没有看到弹出消息要求凭据。 这就是我做的: 1-创建文件域: 2-然后我使用manage users按钮创建了一个用户 3-I使用图形界面而不是编辑器创建了glassfish-web.xml文件 4 – 然后以同样的方式配置web.xml 对不起,如果最后一张图片有点难以看到,你可以放大。 当我使用URL前往/admin.xhtml时,没有什么能阻止我查看页面内容,这意味着没有正确配置。 我不知道我错过了什么。 有人可以试着找出我不能让这个简单的安全任务工作的原因吗? 更新 这是我的web.xml源码 javax.faces.PROJECT_STAGE Development Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet /faces/* 30 faces/index.xhtml Constraint1 allowed /admin.xhtml administrator BASIC file administrator 还有glassfish-web.xml源码 administrator admin Keep a copy of the generated servlet class’ java code. 基本上我想要做的是拥有两种类型的用户。 刚浏览index.xhtml并且根本没有凭据的客户以及将凭据存储在文件中并且在转到admin.xhtml时被要求提供凭据的管理员 我不明白缺少什么。 我是否需要为访客用户创建特殊权限,说他们可以查看index.xhtml?

XSS攻击预防

我正在开发一个用户可以响应博客条目的Web应用程序。 这是一个安全问题,因为它们可以发送危险数据,这些数据将呈现给其他用户(并由javascript执行)。 他们无法格式化他们发送的文本。 没有“大胆”,没有颜色,没有任何东西。 只是简单的文字。 我想出了这个正则表达式来解决我的问题: [^\\w\\s.?!()] 所以任何不是单词字符(aZ,AZ,0-9),而不是空格,“。”,“?”,“!”,“(或”)“将被替换为空字符串。 每个quatation标记将被替换为:“&quot”。 我检查前端的数据,然后在服务器上查看。 有没有人可以绕过这个“解决方案”? 我想知道StackOverflow是如何做到这一点的? 这里有很多格式,所以他们必须做好工作。

想要使用带有32字节的AES 256 CBC,但它显示了java.security.InvalidAlgorithmParameterException

我正在使用AES 256 CBC。 我有32个字节的IV。 但是,当我运行它时,它显示一个例外: Exception in thread “main” java.lang.RuntimeException: java.security.InvalidAlgorithmParameterException: Wrong IV length: must be 16 bytes long at com.abc.aes265cbc.AESUtil.decrypt(AESUtil.java:50) at com.abc.aes265cbc.Security.main(Security.java:48) Caused by: java.security.InvalidAlgorithmParameterException: Wrong IV length: must be 16 bytes long at com.sun.crypto.provider.CipherCore.init(CipherCore.java:430) at com.sun.crypto.provider.AESCipher.engineInit(AESCipher.java:217) at javax.crypto.Cipher.implInit(Cipher.java:790) at javax.crypto.Cipher.chooseProvider(Cipher.java:848) at javax.crypto.Cipher.init(Cipher.java:1347) at javax.crypto.Cipher.init(Cipher.java:1281) at com.abc.aes265cbc.AESUtil.decrypt(AESUtil.java:47) … 1 more 我不知道如何解决这个问题。 我搜索了但是我没有得到如何解决这个问题。 我是第一次尝试安全概念。 我的AES […]

生成给定模数和指数的RSA密钥

我被要求使用给定的modulus和exponent值生成RSA密钥。 但我只想知道生成密钥而不指定模数和指数。 无论给出什么价值,似乎都是大整数值。 我在网上搜索了这个并找到了一些东西,但它无法通过成功。 所以,如果有人以前这样做了,他们可以给我一些提示吗? 这是我们尝试使用给定值的示例程序。 import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.spec.RSAKeyGenParameterSpec; import java.security.spec.RSAPrivateKeySpec; import java.security.spec.RSAPublicKeySpec; public class Sample { public static void main( String args[] ) { BigInteger modulus = new BigInteger(“350871044328208704010580786055405681”); BigInteger exponent = new BigInteger(“545161406957801571”); try { RSAPublicKeySpec […]

IDTECH信用卡读卡器数据解密

我正在尝试解密IDTECH信用卡读卡器的加密数据。 此详细信息已使用DU DES使用带有CBC密码的Triple DES加密。 加密刷卡(来自IDTECH信用卡读卡器): 028801001F372300%*5150********7903^PAYPASS/MASTERCARD^************ ***?*;5150********7903=***************?*8871B640F379F3BD8D057A13F81454 39B28D80BE8A43F3440D85928F576065EEE1BA54CAADFF67D552C2B0CBF1A9F 34B63402B967998FC7C80487C8A6DBFD46975985D3D7E865FEEF6A48930751DC9 71FDFCBC1989294B7EF6F0D0007AA731C31F574608EB85E57751DA48970F96B0E 8BECDB94D672D746C2CC75176FA6E0C9E6FEFE0B154A0959B6299490125000000 00197F6903 解密的可用细节:: Key Value: F5 BF 6B E8 55 AB 92 3A DE 7E 77 40 D8 46 F9 DE KSN: 62 99 49 01 25 00 00 00 00 1A 解密数据(结果):ASCII格式的数据 %B5150710200107903^PAYPASS/MASTERCARD^090910140000631??;5150710200 107903=090910140000631?0 任何安全算法或JAVA专家都可以指导我如何继续解密这些数据。 我在寻找java的解决方案。 以上信息是否足以解密数据或需要更多信息?

使用公钥端点validationJWT签名

我想validation微软的一些JWT的签名。 我正在使用Spring-Boot,JJWT库和以下端点: https ://login.microsoftonline.com/common/discovery/v2.0/keys 端点返回JSON公钥数组。 这是数组中的一个例子。 { “kty”: “RSA”, “use”: “sig”, “kid”: “9FXDpbfMFT2SvQuXh846YTwEIBw”, “x5t”: “9FXDpbfMFT2SvQuXh846YTwEIBw”, “n”: “kvt1VmR4nwkNM8jMU0wmj2gSS8NznbOt2pZI6Z7HQT_esF7W19GZR7Y72Xo1i5zXRDM9o3GeTIjBrnr3yy41Q_EaUQ7C-b-Hmg94Vy7EBZyBhi_mznz0dYWs2MIXwR86Nni9TmgTXvjgTPF2YGJoZt4TwcMFefW8rijCVyNrCBA0XspDouNJavvG0BEMXYigoThFjLRXS5U3h4BDfNZFZZS3dyliNOXfgRn2k7oITz8h_ueiPvmDRFh38AeQgx1cELhKWc3P5ugtttraSwgH7nP2NUguO9nCrHuL6TZ-KWpmRWZqwH-jYKFQVt3CDpzwNM6XJL-oHbl1x-gI3YYX5w”, “e”: “AQAB”, “x5c”: [ “MIIDBTCCAe2gAwIBAgIQZSAeaqWig4BHC1ksmNNcgjANBgkqhkiG9w0BAQsFADAtMSswKQYDVQQDEyJhY2NvdW50cy5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0MB4XDTE3MDUwNjAwMDAwMFoXDTE5MDUwNzAwMDAwMFowLTErMCkGA1UEAxMiYWNjb3VudHMuYWNjZXNzY29udHJvbC53aW5kb3dzLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJL7dVZkeJ8JDTPIzFNMJo9oEkvDc52zrdqWSOmex0E/3rBe1tfRmUe2O9l6NYuc10QzPaNxnkyIwa5698suNUPxGlEOwvm/h5oPeFcuxAWcgYYv5s589HWFrNjCF8EfOjZ4vU5oE1744EzxdmBiaGbeE8HDBXn1vK4owlcjawgQNF7KQ6LjSWr7xtARDF2IoKE4RYy0V0uVN4eAQ3zWRWWUt3cpYjTl34EZ9pO6CE8/If7noj75g0RYd/AHkIMdXBC4SlnNz+boLbba2ksIB+5z9jVILjvZwqx7i+k2filqZkVmasB/o2ChUFbdwg6c8DTOlyS/qB25dcfoCN2GF+cCAwEAAaMhMB8wHQYDVR0OBBYEFGKpXQNrF5IoxS6bL4F92+gxOJlIMA0GCSqGSIb3DQEBCwUAA4IBAQA3HgW5SoHlvvQVxqqi+mtscDZLhNfe13iG/nx8Er5il82b79RVydNs+f9sYxc4T4ctnrZu7x5e7jInJedNdAlrPorBdw+SfvKJsmiNndXugMew1FlcQTQVIFDCbziaJav8rKyMxPfeKkc1aixbajWZkKg6OPmmJn2ceTocbn8PMQy20xNvcWUwgF5FZZIuPqu6feOLJcUIYw+0JFZ265xka30QXpmytcIxajIzpD4PRdCIBuVSqgXacAs4t4+w+OhnosD72yvXck8M4GwX1j+vcuyw0yhDGNMmqsHWP7H3jnJiGDrKhhdVyplzDhTfv2Whbv/dIDn+meLE3yyC5yGL” ], “issuer”: “https://login.microsoftonline.com/{tenantid}/v2.0” } 在JJWT中,我实现了SigningKeyResolver接口,我需要返回一个RSAPublicKey实例来进行validation。 我遇到的问题是从JSON正确创建密钥。 我是从模数和指数开始的吗? BigInteger modulus = new BigInteger(1, Base64.decodeBase64(jsonKey.getN())); BigInteger exponent = new BigInteger(1, Base64.decodeBase64(jsonKey.getE())); publicKey = KeyFactory.getInstance(“RSA”).generatePublic(new RSAPublicKeySpec(modulus, exponent)); 我是从x5c开始,生成X509Certificate对象并从那里拉出PublicKey吗? CertificateFactory factory = CertificateFactory.getInstance(“X.509”); X509Certificate cert = (X509Certificate) […]

当从unsigned Javascript调用时,如何获得已签名的Java Applet以执行特权操作?

签名的Java Applet与客户端上运行的普通Java应用程序具有相同的安全许可。 对于特定项目,我需要这些权限,并且我需要在JavaScript调用的情况下执行特权操作。 现在,问题是,至少对于Ubuntu中的Firefox 3(目标浏览器和平台),当通过未签名的JavaScript调用applet方法时,它会丢失其特殊权限。 由于签署JavaScript不是一种选择,我需要一种方法来解决这个限制。 实现此目的的一种方法是在applet启动时创建一个线程,并在主线程接收到JavaScript调用时调用该线程上的方法。 我已经实现了这个想法的工作原型,但我发现它有点笨拙,因为它使用了太多的reflection并且不像我想要的那样容易重复使用。 做我正在尝试做的事情有一种共同的,标准的方式吗? 而且,如果我的想法是正确的方法,你将如何以可重用的方式实现它? 我想要实现的是一个允许这种“运行方法在特权线程”事物被用于各种对象的框架。 理想的,utopic解决方案将是这样的: // when the applet starts-up PrivilegedExecuter priv = new PrivilegedExecuter(myObject); //or MyClass.class // … // inside a JavaScript-called method (myObject has myMethod) priv.myMethod(); // myMethod is run synchronously in a privileged thread

加密战争文件

我想加密或混淆我的WAR文件,以便逆向工程将需要更多的努力。 是否有这样的工具或maven插件会加密WAR文件及其内容? 此外,一旦WAR加密,那么Web应用程序将如何部署? 如果Web服务器爆炸WAR,每个jar和资源是否仍然可以加密,如何修改启动行为以解密嵌套的jar和资源? 谢谢,沃尔特