mirror of
https://github.com/willnorris/imageproxy.git
synced 2026-06-10 20:05:12 +02:00
Create URL signing page
commit
946c2eb4f0
1 changed files with 80 additions and 0 deletions
80
URL-signing.md
Normal file
80
URL-signing.md
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
# How to generate signed requests
|
||||
|
||||
## Go
|
||||
|
||||
main.go:
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"fmt"
|
||||
"crypto/hmac"
|
||||
"crypto/sha256"
|
||||
"encoding/base64"
|
||||
)
|
||||
|
||||
func main() {
|
||||
mac := hmac.New(sha256.New, []byte(os.Args[1]))
|
||||
mac.Write([]byte(os.Args[2]))
|
||||
want := mac.Sum(nil)
|
||||
fmt.Println("result: ",base64.URLEncoding.EncodeToString(want))
|
||||
}
|
||||
```
|
||||
|
||||
```shell
|
||||
$ go run main.go "test" "https://www.google.fr/images/srpr/logo11w.png"
|
||||
result: RYifAJRfbhsitJeOrDNxWURCCkPsVR4ihCPXNv-ePbA=
|
||||
```
|
||||
|
||||
## Bash
|
||||
|
||||
```shell
|
||||
$ echo -n "https://www.google.fr/images/srpr/logo11w.png" | openssl dgst -sha256 -hmac "test" -binary|base64| tr '/+' '_-'
|
||||
RYifAJRfbhsitJeOrDNxWURCCkPsVR4ihCPXNv-ePbA=
|
||||
```
|
||||
|
||||
## Java
|
||||
|
||||
```java
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import javax.crypto.Mac;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
class EncodeUrl {
|
||||
|
||||
public static String encode(String key, String data) throws Exception {
|
||||
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
|
||||
SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(), "HmacSHA256");
|
||||
sha256_HMAC.init(secret_key);
|
||||
|
||||
return Base64.encodeBase64URLSafeString(sha256_HMAC.doFinal(data.getBytes()));
|
||||
}
|
||||
|
||||
public static void main(String [] args) throws Exception {
|
||||
System.out.println(encode(args[0], args[1]));
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
```shell
|
||||
$ java -cp commons-codec-1.10.jar:. EncodeUrl test https://www.google.fr/images/srpr/logo11w.png
|
||||
RYifAJRfbhsitJeOrDNxWURCCkPsVR4ihCPXNv-ePbA
|
||||
```
|
||||
|
||||
## Ruby
|
||||
|
||||
```ruby
|
||||
require 'openssl'
|
||||
require 'Base64'
|
||||
|
||||
key = "test"
|
||||
data = "https://www.google.fr/images/srpr/logo11w.png"
|
||||
puts Base64.urlsafe_encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), key, data)).strip()
|
||||
```
|
||||
|
||||
```shell
|
||||
% ruby sign.rb
|
||||
RYifAJRfbhsitJeOrDNxWURCCkPsVR4ihCPXNv-ePbA=
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue