小编Joh*_*Doe的帖子

toDerInputStream 拒绝标签类型 0 - 无法从密钥库读取密钥

在我的 Android 应用程序中,我有一个名为 的密钥库文件keystore.p12,它位于/data/data/com.company.myapp/files. 我拉了这个特定的文件,现在我想检索存储在其中的密钥。

我用这样的keytool试了一下:

>keytool.exe -list -keystore C:\Users\user\Desktop\keystore.p12 -storepass letmein -storetype PKCS12 -v
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到以下错误:

keytool error: java.io.IOException: toDerInputStream rejects tag type 0
java.io.IOException: toDerInputStream rejects tag type 0
        at sun.security.util.DerValue.toDerInputStream(DerValue.java:874)
        at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1915)
        at java.security.KeyStore.load(KeyStore.java:1445)
        at sun.security.tools.keytool.Main.doCommands(Main.java:795)
        at sun.security.tools.keytool.Main.run(Main.java:343)
        at sun.security.tools.keytool.Main.main(Main.java:336)
Run Code Online (Sandbox Code Playgroud)

我用 Java 尝试了同样的事情,但我遇到了同样的异常:

public static void main(String[] args) {
        try {
            FileInputStream is = new FileInputStream("C:\\Users\\user\\Desktop\\keystore.p12");
            KeyStore keystore = KeyStore.getInstance("pkcs12");
            keystore.load(is, "letmein".toCharArray());
            is.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?

java android keytool java-security

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

如何在Python map中返回多个值?

我有一个dicts列表:

>>> adict = {'name': 'John Doe', 'age': 18}
>>> bdict = {'name': 'Jane Doe', 'age': 20}
>>> l = []
>>> l.append(adict)
>>> l.append(bdict)
>>> l
[{'age': 18, 'name': 'John Doe'}, {'age': 20, 'name': 'Jane Doe'}]
Run Code Online (Sandbox Code Playgroud)

现在我想分割每个键的每个dict的值.目前,我就是这样做的:

>>> for i in l:
...     name_vals.append(i['name'])
...     age_vals.append(i['age'])
...
>>> name_vals
['John Doe', 'Jane Doe']
>>> age_vals
[18, 20]
Run Code Online (Sandbox Code Playgroud)

是否可以通过地图实现这一目标?这样我就不必多次调用地图,只需要一次?

name_vals, age_vals = map(lambda ....)
Run Code Online (Sandbox Code Playgroud)

python functional-programming

3
推荐指数
2
解决办法
238
查看次数

如何在Python中将包含键值的字符串列表映射到dict?

我的列表包含以下元素:

>>> s = "foo a=b c=d e=f"
>>> s.split()
['set', 'a=b', 'c=d', 'e=f']
>>> splitted = s.split()
>>> splitted[1:]
['a=b', 'c=d', 'e=f']
Run Code Online (Sandbox Code Playgroud)

现在我想使用map来获得以下结果:

[{'a': 'b'}, {'c': 'd'}, {'e': 'f'}]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下,但这给了我一个IndexError:

>>> map(lambda x : dict((a[0], a[1]) for a in x.split('=')) , splitted[1:])

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
  File "<stdin>", line 1, in <genexpr>
IndexError: string index out of range
Run Code Online (Sandbox Code Playgroud)

python functional-programming

2
推荐指数
1
解决办法
135
查看次数