小编Jco*_*cov的帖子

RSA JWT关键轮换期?

我已经创建了一个基本的JWT生成器,但需要在几个方面提供建议.我一直在使用JWT.io的指南和auth0/java-jwt库/ repo来生成令牌.

JWT正在使用2个不同的密钥进行签名.

使用RSA512算法使用4096位密钥对刷新令牌进行签名.

.sign(Algorithm.RSA512(rsaPublicKey, rsaPrivateKey));
Run Code Online (Sandbox Code Playgroud)

通过RSA256算法使用1024位RSA密钥对访问令牌进行签名.

 .sign(Algorithm.RSA256(rsaPublicKey, rsaPrivateKey));
Run Code Online (Sandbox Code Playgroud)

由于4096位验证过程需要更长的时间,因此我对"速度"的建议已经采用了这一点,但似乎对刷新令牌的请求较少,安全性的权衡似乎是公平的.

另一方面,访问令牌在资源服务器端点进行验证,并且它们被更频繁地发送,因此我选择了更短(256)的签名,该签名使用更快的1024位密钥进行.

我知道钥匙"几乎"不可能破坏......但建议使用钥匙旋转?

我将jks(密钥库)保存在auth服务器和资源服务器上的私有文件夹中.密钥库包含2个密钥对,一个用于刷新令牌签名/验证,另一个用于访问令牌签名/验证.

我需要刷新/形成新密钥吗?如果是这样......多久一次?建议的方法是什么?

在负载均衡器后面可以有多个auth和资源微服务实例...因此RAM生成的密钥是否为,因为它们不会在实例之间传播.

我已经看过可能有一个"密钥服务器",可以说创建新密钥并将它们附加到密钥库并将新的jks文件更新为新的密钥对...类似于: 实例之间的文件共享

因此,例如,每隔15秒,EC2 auth服务器和资源服务器ping密钥服务器,请求当前jks的副本(和版本检查).

有什么建议?

谢谢!

security token jks jwt

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

使用"id"字段更新列表的子部分

我正在尝试学习如何使用lambda函数获得更时尚的代码,但努力使这项工作成功.

我有两个清单."旧"列表总是比"更新列表"更短或相同.我想从"更新列表"中取出对象,并在较短的"旧列表"中覆盖"陈旧对象".列表具有每个对象的唯一字段.

例如,它有点像使用新版本更新库中的书籍.UUID(标题+作者)保持不变,但新对象用新书/对象替换旧架子上的旧对象.

我知道我可以做到"漫长的道路"然后做一个HashMap<MyUniqueFieldInMyObject, MyObject>然后采取新的List<MyUpdatedObjects>做同样的事情.

即,具有HashMap<UniqueField, MyOldObject>HashMap<UniqueField, MyUpdatedObject>,然后遍历与伪"如果更新的对象具有相同键的条目,覆盖更新后的值的价值"的老物件...

但...

使用功能性lambda语句有没有"更好"的短路方式?

我在思考:

List<MyObject> updatedList;
List<MyObject> oldList;

updatedList.forEach(MyObject -> {

    String id = MyObject.getId();

    if (oldList.stream().anyMatcher(MyObject -> 
        MyObject.getId().matches(id)) {
           //Do the replacement here? If so...how?
       }
}
Run Code Online (Sandbox Code Playgroud)

哪个是我丢失的地方!

谢谢你的指导.

java lambda list java-8 java-stream

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

排列,但有一些数字保持在一个顺序

好的,我已经浏览了一下,我已经找到了解决这个问题的C或python解决方案.我更喜欢python ...虽然它是我较弱的语言(2种非常弱的语言).

一组数字,例如0 0 1 7 0 0 3 0 0 4

  1. 找到集合的所有排列.
  2. 数字> 0必须保持该顺序(不是位置!)
  3. 数字之间必须有0,但在集合的开头和结尾不需要0.只要数字> 0之间至少有一个0.

首先,我想到找到所有可能的排列然后去除每个排列的箔条(检查n> 0,!n + 1> 0),然后第一个数字> 0 == 1,第二个#> 0 = = 7等

然后我停下来,认为这是愚蠢的,说有12个数字,这将给12!排列.这是500,000,000排列的顺序,我将不得不再次通过以摆脱箔条.

假设我有40到50套这些数字套装可以通过,这是一个公平的时间.

有更合乎逻辑的方式吗?我想到某种方式让python做排列以某种方式考虑这些规则(如果n> 0,n + 1必须== 0)和(n =第一个数字,n2 =第2个等)

一个较小的集合的例子是(不是所有的PERMUTATIONS,但给出了想法):

1,2,3,0,0,0,0,0

  1. 1,0,2,0,3,0,0,0
  2. 0,1,0,2,0,3,0,0
  3. 0,0,1,0,2,0,3,0
  4. 0,0,1,0,0,2,0,3
  5. 0,1,0,0,2,0,3,0

所以1,2,3是有序的,但是"0"只是左右移动了?

谢谢!

c python sorting algorithm permutation

6
推荐指数
1
解决办法
328
查看次数

清单合并失败 - 支持:appcompat-v7:26.+

错误:任务':app:processDebugManifest'的执行失败.清单合并失败:来自[com.android.support:cardview-v7:25.3.1]的属性meta-data#android.support.VERSION@value value =(25.3.1)AndroidManifest.xml:24:9-31也是出现在[com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml:27:9-38 value =(26.0.0-alpha1).建议:在AndroidManifest.xml:22:5-24:34中添加'tools:replace ="android:value"'来覆盖.

我正在尝试使用目标SDK为26的应用程序.该应用程序需要Facebook SDK(最新根据Facebook SDK版本 4.25.0.

Volley是版本1.0.0(Android Volley Dev Page)

我只能从错误猜测这些SDK中的一些共享库但是一个加载不同的版本到另一个...所以我需要添加某种形式的"加载这个而不是这个"像我的Gradle文件中的命令?或者我只是遗漏了什么?

我的Gradle Build文件如下所示出现上述错误.

Project Gradle Build:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()

    }
}

task clean(type: Delete) { …
Run Code Online (Sandbox Code Playgroud)

sdk android facebook manifest gradle

3
推荐指数
1
解决办法
5169
查看次数

标签 统计

algorithm ×1

android ×1

c ×1

facebook ×1

gradle ×1

java ×1

java-8 ×1

java-stream ×1

jks ×1

jwt ×1

lambda ×1

list ×1

manifest ×1

permutation ×1

python ×1

sdk ×1

security ×1

sorting ×1

token ×1