Key Property
The secret key for the hash algorithm.
Syntax
ANSI (Cross Platform) int GetKey(char* &lpKey, int &lenKey);
int SetKey(const char* lpKey, int lenKey); Unicode (Windows) INT GetKey(LPSTR &lpKey, INT &lenKey);
INT SetKey(LPCSTR lpKey, INT lenKey);
@property (nonatomic,readwrite,assign,getter=key,setter=setKey:) NSString* key; - (NSString*)key; - (void)setKey:(NSString*)newKey;
@property (nonatomic,readwrite,assign,getter=keyB,setter=setKeyB:) NSData* keyB; - (NSData*)keyB; - (void)setKeyB:(NSData*)newKey;
#define PID_JWS_KEY 13 IPWORKSENCRYPT_EXTERNAL void* IPWORKSENCRYPT_CALL IPWorksEncrypt_JWS_Get(void *lpObj, int propid, int arridx, int *lpcbVal, int64 *lpllVal); IPWORKSENCRYPT_EXTERNAL int IPWORKSENCRYPT_CALL IPWorksEncrypt_JWS_Set(void *lpObj, int propid, int arridx, const void *val, int cbVal);
Default Value
""
Remarks
This property holds the secret key used when creating the hash. The key can be arbitrarily long.
Note: This property is only applicable when Algorithm is set to an HMAC algorithm.
It is recommended that the length of the key be equal to or larger than the hash size of the algorithm. Use of keys shorter than the hash size is discouraged.
Sizes (in bytes)
SHA1 | SHA224 | SHA256 | SHA384 | SHA512 | MD5 | RIPEMD160 | |
Recommended Key Size | 20 | 28 | 32 | 48 | 64 | 16 | 20 |
Hash Size | 20 | 28 | 32 | 48 | 64 | 16 | 20 |
Block Size | 64 | 64 | 64 | 128 | 128 | 64 | 64 |
Key Length Details
As mentioned above it is recommended to use a key size equal to the hash size. Use of keys larger than the hash size does not typically significantly increase the function strength. Keys of any length are technically valid however see the below processing rules to understand how keys of varying lengths are treated:
- If the key length is equal to the hash size (recommended) it is used without modification.
- If the key length is less than the hash size it is used without modification.
- If the key length is less than or equal to the block size it is used without modification.
- If the key length is larger than the block size is it first hashed with the same algorithm.
Data Type
Binary String